Why isn#39;t JMenu always on top?(为什么 JMenu 不总是在最前面?)
问题描述
在使用 JButton 更新 JFrame 上的 JTable 之前,JMenu 行为正常.然后 JMenu 主要被 JPanel 隐藏(见下图).JMenu 不应该在被选中时始终位于顶部吗?为什么被推到后面?更新 jButtonAddActionPerformed 上的表的代码是.
The JMenu behaves normally until a JButton is used to update a JTable on the JFrame. Then the JMenu is mostly hidden by a JPanel (see images below). Shouldn't the JMenu always be on top when it is selected? Why has it been pushed to the back? The code that updates the table on jButtonAddActionPerformed is.
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 时使用的是 Canvas.Canvas 是一个 AWT 组件,绘制在 Swing 组件之上.不要在 Swing 应用程序中使用 AWT 组件.
Probably because you are using a Canvas when you should be using a JPanel. Canvas is an AWT component and is painted on top of Swing components. Don't use AWT components in a Swing application.
如果您确实需要使用 AWT 组件,那么您需要 JDK 的当前版本.查看混合重质和轻质成分.
If you really need to use an AWT component then you need a current release of the JDK. See Mixing Heavy and Light Components.
这篇关于为什么 JMenu 不总是在最前面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:为什么 JMenu 不总是在最前面?


基础教程推荐
- Java Swing计时器未清除 2022-01-01
- 从 python 访问 JVM 2022-01-01
- Java 实例变量在两个语句中声明和初始化 2022-01-01
- 在 Java 中创建日期的正确方法是什么? 2022-01-01
- 如何在 JFrame 中覆盖 windowsClosing 事件 2022-01-01
- 大摇大摆的枚举 2022-01-01
- 如何在 Spring @Value 注解中正确指定默认值? 2022-01-01
- 多个组件的复杂布局 2022-01-01
- 验证是否调用了所有 getter 方法 2022-01-01
- 不推荐使用 Api 注释的描述 2022-01-01