Почему JMenu не всегда на вершине? - PullRequest
1 голос
/ 12 октября 2010

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

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

Ответы [ 2 ]

4 голосов
/ 12 октября 2010

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

Редактировать:

Если вам действительно нужно использовать компонент AWT, то вам нужен текущий выпуск JDK. См. Смешивание тяжелых и легких компонентов .

2 голосов
/ 12 октября 2010

Я бы предложил прочитать Смешивание тяжелых и легких компонентов для получения дополнительной информации.

...