Проблема с TabbedPane в JAVA - PullRequest
1 голос
/ 13 мая 2011

Г!

Я хочу создать TabbedPane с помощью jTable.

Дизайнер: enter image description here

Код конструктора в JForm:

    initComponents();
    this.add(jTabbedPane1);
    jTabbedPane1.addTab("Test", jPanel1);
    jPanel1.add(jTable1);

Auto-Gen-код:

private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton_add = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setMinimumSize(new java.awt.Dimension(550, 300));

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"dddsds", null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 530, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(27, Short.MAX_VALUE))
        );

        jButton_add.setText("add");
        jButton_add.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton_add.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_addActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(39, 39, 39)
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(31, 31, 31)
                        .addComponent(jButton_add)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(28, 28, 28)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jButton_add)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

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

Проблема:

jTable1 невидим, а кнопка находится под jTabbedPane, а не под jPanel.

Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Не следует добавлять jTable1 дважды к jPanel1.initComponents() уже добавляет jScrollPane1 (включая jTable1) к jPanel1 с помощью jPanel1Layout.Но в вашем конструкторе вы добавляете jTable1 второй раз, явно к jPanel1.Следовательно, ваш конструктор должен выглядеть следующим образом:

initComponents();
this.add(jTabbedPane1);
jTabbedPane1.addTab("Test", jPanel1);

Обратите внимание, что я удалил строку jPanel1.add(jTable1);

Тогда у вас та же проблема с jTabbedPane1, который добавляется дважды кпанель содержимого.

Из сгенерированного кода, который я вижу, я бы сказал, что вы, вероятно, совершили некоторые некорректные манипуляции с конструктором графического интерфейса Netbeans, поскольку jTable1 НЕ находится внутри jTabbedPane1, а непосредственно внутри панели содержимого фрейма.,Я думаю, вам следует изменить дизайн панели с нуля или, по крайней мере, изменить свой интерфейс в конструкторе.

Важно понимать, что при использовании GroupLayout API компоненты автоматически добавляются в их контейнер и, следовательно,не следует добавлять явно.

На самом деле мой лучший совет: не используйте конструктор интерфейсов NetBeands и не кодируйте свой интерфейс вручную (но не с помощью GroupLayout, который слишком сложен, чтобы кодироваться вручную).).

1 голос
/ 13 мая 2011

Причин может быть несколько: 1. jPanel1 имеет неправильный макет 2. this неправильный контейнер.3. jTable1 не инициализируется должным образом.

просто отправьте больше кода ( sscce , если это возможно)

РЕДАКТИРОВАТЬ: Вы должны добавить jScrollPane1 not table. Также см. Порядок размещения.() Вы добавляете jPanel1, JTabbedPane1, JButton_add.

...