2010-10-12 118 views
1

直到使用JButton更新JFrame上的JTable时,JMenu才正常运行。 然后,JMenu主要被JPanel隐藏(请参阅下图)。 JMenu不应该在选中时始终处于顶端吗? 它为什么被推到后面? 更新jButtonAddActionPerformed上的表的代码是。可能是因为你使用的是画布时,你应该用一个JPanelJMenu为什么总是不上?

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是如何添加的?你可以分享该代码吗? – 2010-10-12 14:46:00

+0

看起来你在混合AWT和Swing代码。 – Goibniu 2010-10-12 14:50:32

+0

@Faisal。我只是使用当前版本的NetBeans的GUI来添加组件。使用JLabel而不是JPanel修复它。 – jacknad 2010-10-12 15:47:00

回答

4

。画布是一个AWT组件,被绘制在Swing组件的顶部。不要在Swing应用程序中使用AWT组件。

编辑:

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

+0

使用JLabel而不是JPanel修复它。 – jacknad 2010-10-12 15:47:23