为什么 JMenu 不总是在最上面?

jac*_*nad 1 java swing jframe jmenu

JMenu 表现正常,直到使用 JButton 更新 JFrame 上的 JTable。然后 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);
    }                                                  
...
Run Code Online (Sandbox Code Playgroud)

预期的

替代文本

破碎的

替代文本

cam*_*ckr 5

可能是因为您应该使用 JPanel 时却使用了 Canvas。Canvas 是一个 AWT 组件,绘制在 Swing 组件之上。不要在 Swing 应用程序中使用 AWT 组件。

编辑:

如果您确实需要使用 AWT 组件,那么您需要最新版本的 JDK。请参阅混合重组分和轻组分