为什么JMenu永远不会排在首位?

时间:2010-10-12 14:35:30

标签: 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);
    }                                                  
...

预期

alt text

alt text

2 个答案:

答案 0 :(得分:4)

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

编辑:

如果您确实需要使用AWT组件,那么您需要JDK的当前版本。 See Mixing Heavy and Light Components

答案 1 :(得分:2)

我建议您阅读Mixing Heavyweight and Lightweight Components以获取更多信息。