简体   繁体   English

NetBeans和JDialog如何重用代码?

[英]NetBeans and JDialog how to reuse code?

I am designing a JDialog in NetBeans and I want to reuse code. 我正在NetBeans中设计一个JDialog,我想重用代码。 Basically I have a JTabbedPane with 3 tabs. 基本上我有一个带有3个标签的JTabbedPane。 All 3 tabs have a JTable each and all 3 JTables are the same structure. 所有3个选项卡都有一个JTable,所有3个JTable都是相同的结构。 NetBeans is generating new code for each JTable, is there a way to reuse the same code in NetBeans? NetBeans正在为每个JTable生成新代码,有没有办法在NetBeans中重用相同的代码?

This is the GUI code I have: 这是我拥有的GUI代码:

private void initComponents() {

    jlPacket = new javax.swing.JLabel();
    jtpPacket = new javax.swing.JTabbedPane();
    jpInputs = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    jtblInputs = new javax.swing.JTable();
    jpOutputs = new javax.swing.JPanel();
    jScrollPane2 = new javax.swing.JScrollPane();
    jtblOutputs = new javax.swing.JTable();
    jPanel3 = new javax.swing.JPanel();
    jbSavePacketConfiguration = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    setResizable(false);

    jlPacket.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
    jlPacket.setText("Packet Configuration");

    jtpPacket.setBackground(new java.awt.Color(255, 255, 255));
    jtpPacket.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jpInputs.setBackground(new java.awt.Color(255, 255, 255));

    jtblInputs.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
    jtblInputs.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {

        },
        new String [] {
            "Group", "Start Address", "End Address"
        }
    ) {
        boolean[] canEdit = new boolean [] {
            false, true, true
        };

        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    });
    jtblInputs.setSelectionBackground(new java.awt.Color(204, 255, 204));
    jtblInputs.setSelectionForeground(new java.awt.Color(0, 0, 0));
    jtblInputs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    jtblInputs.getTableHeader().setReorderingAllowed(false);
    jScrollPane1.setViewportView(jtblInputs);
    jtblInputs.getColumnModel().getColumn(0).setResizable(false);
    jtblInputs.getColumnModel().getColumn(1).setResizable(false);
    jtblInputs.getColumnModel().getColumn(2).setResizable(false);

    javax.swing.GroupLayout jpInputsLayout = new javax.swing.GroupLayout(jpInputs);
    jpInputs.setLayout(jpInputsLayout);
    jpInputsLayout.setHorizontalGroup(
        jpInputsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jpInputsLayout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
            .addContainerGap())
    );
    jpInputsLayout.setVerticalGroup(
        jpInputsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(jpInputsLayout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE)
            .addContainerGap())
    );

    jtpPacket.addTab("Inputs", jpInputs);

    jpOutputs.setBackground(new java.awt.Color(255, 255, 255));
    jpOutputs.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    jtblOutputs.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
    jtblOutputs.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {

        },
        new String [] {
            "Group", "Start Address", "End Address"
        }
    ) {
        boolean[] canEdit = new boolean [] {
            false, true, true
        };

        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    });
    jtblOutputs.setSelectionBackground(new java.awt.Color(204, 255, 204));
    jtblOutputs.setSelectionForeground(new java.awt.Color(0, 0, 0));
    jtblOutputs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    jtblOutputs.getTableHeader().setReorderingAllowed(false);
    jScrollPane2.setViewportView(jtblOutputs);
    jtblOutputs.getColumnModel().getColumn(0).setResizable(false);
    jtblOutputs.getColumnModel().getColumn(1).setResizable(false);
    jtblOutputs.getColumnModel().getColumn(2).setResizable(false);

    javax.swing.GroupLayout jpOutputsLayout = new javax.swing.GroupLayout(jpOutputs);
    jpOutputs.setLayout(jpOutputsLayout);
    jpOutputsLayout.setHorizontalGroup(
        jpOutputsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 295, Short.MAX_VALUE)
        .addGroup(jpOutputsLayout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 275, Short.MAX_VALUE)
            .addContainerGap())
    );
    jpOutputsLayout.setVerticalGroup(
        jpOutputsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 305, Short.MAX_VALUE)
        .addGroup(jpOutputsLayout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE)
            .addContainerGap())
    );

    jtpPacket.addTab("Outputs", jpOutputs);

    jPanel3.setBackground(new java.awt.Color(255, 255, 255));
    jPanel3.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

    javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
    jPanel3.setLayout(jPanel3Layout);
    jPanel3Layout.setHorizontalGroup(
        jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 295, Short.MAX_VALUE)
    );
    jPanel3Layout.setVerticalGroup(
        jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 305, Short.MAX_VALUE)
    );

    jtpPacket.addTab("Outputs", jPanel3);

    jbSavePacketConfiguration.setBackground(new java.awt.Color(255, 255, 255));
    jbSavePacketConfiguration.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
    jbSavePacketConfiguration.setText("Save Packet Configuration");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jtpPacket, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
                .addComponent(jlPacket)
                .addComponent(jbSavePacketConfiguration))
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jlPacket)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jtpPacket, javax.swing.GroupLayout.PREFERRED_SIZE, 334, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(jbSavePacketConfiguration)
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    );

    pack();
}// </editor-fold>

1) change setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 1)更改setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

  • DO_NOTHING_ON_CLOSE nothing happens, then you have to call setVisible(false); DO_NOTHING_ON_CLOSE没有任何反应,那么你必须调用setVisible(false);

or 要么

  • HIDE_ON_CLOSE

2) put there JPanel , call it fe fatherPanel 2)放在那里JPanel ,称之为fe fatherPanel

3) to this fatherPanel add another JPanel that nest your JComponents 3)向这个fatherPanel添加另一个嵌套你的JComponents的JPanel

4) remove contents fatherPanel.removeAll(); 4)删除内容fatherPanel.removeAll();

5) add new contents, again same or another JPanel with JComponents 5)使用JComponents添加新内容,再次添加相同或另一个JPanel

6) last code lines must be 6)最后的代码行必须是

fatherPanel.add(myPanel);
fatherPanel.revalidate();
fatherPanel.repaint();//sometimes required

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM