2010-10-12 7 views
1

JMenu ведет себя нормально, пока JButton не используется для обновления JTable на JFrame. Затем JMenu в основном скрывается JPanel (см. Изображения ниже). Должен ли JMenu всегда быть на вершине, когда он выбран? Почему это было отодвинуто на спину? Код, обновляющий таблицу на jButtonAddActionPerformed.Почему JMenu всегда на высоте?

public class MyClass extends javax.swing.JFrame { 
    private void jButtonAddActionPerformed(java.awt.event.ActionEvent evt) { 
     DefaultTableModel model = (DefaultTableModel) jTable.getModel(); 
     model.addRow(new Object[]{"", DEFAULT_ON, DEFAULT_OFF}); 
     int lastRow = jTable.getRowCount() - 1; 
     jTable.setValueAt(lastRow + 1, lastRow, 0); 
    }             
... 

Ожидаемые

alt text

Сломанный

alt text

+0

Как был добавлен этот JPanel? Можете ли вы поделиться этим кодом? –

+0

Похоже, вы смешиваете код AWT и Swing. – Goibniu

+0

@Faisal. Я просто использую GUI из текущей версии NetBeans для добавления компонентов. Использование JLabel вместо JPanel исправило его. – jacknad

ответ

4

Вероятно потому, что вы используете холст, когда вы должны использовать JPanel. Холст является компонентом AWT и окрашен поверх компонентов Swing. Не используйте AWT-компоненты в приложении Swing.

Edit:

Если вам действительно нужно использовать компонент AWT, то вам нужен текущий выпуск JDK. See Mixing Heavy and Light Components.

+0

Использование JLabel вместо JPanel исправлено. – jacknad

 Смежные вопросы

  • Нет связанных вопросов^_^