Java 将JInternalFrame置于其他JPanel之上
我有两个JPanel,分别命名为“panelMenu”和“panelTable”。它们都被添加到名为“桌面”的JDesktopPane中。我在“panelMenu”中放置了一个按钮,当它被点击时,它将显示一个JInternalFrame 两个面板在“桌面”中并排设置…问题来了…当我单击按钮时…JInternalFrame将显示,但它最初位于“面板”的后面…我如何使JInternalFrame始终位于任何其他组件的顶部 //将面板添加到桌面Java 将JInternalFrame置于其他JPanel之上,java,swing,jpanel,jinternalframe,Java,Swing,Jpanel,Jinternalframe,我有两个JPanel,分别命名为“panelMenu”和“panelTable”。它们都被添加到名为“桌面”的JDesktopPane中。我在“panelMenu”中放置了一个按钮,当它被点击时,它将显示一个JInternalFrame 两个面板在“桌面”中并排设置…问题来了…当我单击按钮时…JInternalFrame将显示,但它最初位于“面板”的后面…我如何使JInternalFrame始终位于任何其他组件的顶部 //将面板添加到桌面 panelMenu.setBackground(Colo
panelMenu.setBackground(Color.yellow);
panelMenu.setBounds(0,0,200,800);
panelMenu.setLayout(null);
panelTable.setBackground(Color.gray);
panelTable.setBounds(250,50,700,700);
panelTable.setLayout(null);
desktop.setLayout(null);
desktop.setSize(width, height);
desktop.setBackground(Color.gray);
desktop.add(panelMenu);
desktop.add(panelTable);
this.add(desktop);
如何使用:
下面的代码将帮助您
//yourDesktopPane
//panelMenu
//panelTable
//buttonMenu
//buttonTable
private void buttonMenuMouseClicked(java.awt.event.MouseEvent evt) {
panelMenu obj = new panelMenu ();
BasicInternalFrameUI bi = (BasicInternalFrameUI) obj.getUI();
bi.setNorthPane(null);
obj.setBounds(0, 0, 1220, 700);//your desired values
obj.setVisible(true);
yourDesktopPane.add(obj);
obj.toFront();
}
private void buttonTableMouseClicked(java.awt.event.MouseEvent evt) {
panelTableobj = new panelTable();
BasicInternalFrameUI bi = (BasicInternalFrameUI) obj.getUI();
bi.setNorthPane(null);
obj.setBounds(0, 0, 1220, 700);//your desired values
obj.setVisible(true);
yourDesktopPane.add(obj);
obj.toFront();
}
避免使用
null
布局,像素完美的布局在现代ui设计中是一种错觉。影响零部件单个尺寸的因素太多,您无法控制。Swing旨在与核心的布局管理器一起工作,丢弃它们将导致无止境的问题,您将花费越来越多的时间试图纠正JDesktopPane
扩展自JLayeredPane
。您可以尝试使用JInternalFrame#moveToFront
,但这可能不起作用,因为面板可能已添加到与内部框架相同或更高的位置。有关更多详细信息,请参阅提供了一个演示您的问题的文档。这将减少混乱和更好的响应
//yourDesktopPane
//panelMenu
//panelTable
//buttonMenu
//buttonTable
private void buttonMenuMouseClicked(java.awt.event.MouseEvent evt) {
panelMenu obj = new panelMenu ();
BasicInternalFrameUI bi = (BasicInternalFrameUI) obj.getUI();
bi.setNorthPane(null);
obj.setBounds(0, 0, 1220, 700);//your desired values
obj.setVisible(true);
yourDesktopPane.add(obj);
obj.toFront();
}
private void buttonTableMouseClicked(java.awt.event.MouseEvent evt) {
panelTableobj = new panelTable();
BasicInternalFrameUI bi = (BasicInternalFrameUI) obj.getUI();
bi.setNorthPane(null);
obj.setBounds(0, 0, 1220, 700);//your desired values
obj.setVisible(true);
yourDesktopPane.add(obj);
obj.toFront();
}