【问题标题】:Why isn't JMenu always on top?为什么 JMenu 不总是在最前面?
【发布时间】:2010-10-12 14:35:30
【问题描述】:

在使用 JButton 更新 JFrame 上的 JTable 之前,JMenu 行为正常。 然后 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);
    }                                                  
...

预期

坏了

【问题讨论】:

  • 这个JPanel是怎么添加的?你能分享那个代码吗?
  • 看起来你正在混合 AWT 和 Swing 代码。
  • @Faisal。我只是使用当前版本的 NetBeans 的 GUI 来添加组件。使用 JLabel 而不是 JPanel 修复了它。

标签: java swing jframe jmenu


【解决方案1】:

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

编辑:

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

【讨论】:

  • 使用 JLabel 而不是 JPanel 修复了它。
【解决方案2】:

我建议阅读Mixing Heavyweight and Lightweight Components 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2013-04-10
    • 2015-03-08
    • 2018-05-08
    • 1970-01-01
    • 2010-11-22
    • 2012-12-17
    相关资源
    最近更新 更多