gpt4 book ai didi

java - Swing 重叠组件

转载 作者:行者123 更新时间:2023-12-02 11:07:39 24 4
gpt4 key购买 nike

我在框架中有两个 AWT 组件,面板 A 和面板 B。我希望面板 A 的大小调整为框架的高度宽度(并在调整框架大小时保持该大小),但我希望面板 B重叠 A。B 将处于固定位置(0,0 以使其更容易),具有固定的高度和宽度。我不确定需要什么样的布局管理器才能完成这项工作。如果我使用空布局,我想我必须自己管理面板 A 的大小调整,但这将使面板 B 的大小调整相对容易。关于如何实现这一目标有什么想法吗?

谢谢,杰夫

最佳答案

看看JLayeredPanesHere is a tutorial .

编辑:

如果 panelA 是 AWT 组件,您将很难让 panelB 重叠。摘自Sun的文章,题为Mixing Heavy and Light Components :

Do not mix lightweight (Swing) and heavyweight (AWT) components within a container where the lightweight component is expected to overlap the heavyweight one.

但是,如果您希望 panelA 完全填充框架,为什么不将 panelB 添加为 panelA 的组件呢?

编辑2:

如果您可以使 panelB 成为重量级组件,那么您可以使用 JLayeredPane

这是一个快速模型,展示了如何:

public static void main(String[] args){
new GUITest();
}

public GUITest() {
frame = new JFrame("test");
frame.setSize(300,300);
addStuffToFrame();
SwingUtilities.invokeLater(new Runnable(){
public void run() {
frame.setVisible(true);
}
});

}

private void addStuffToFrame() {
Panel awtPanel = new Panel();
awtPanel.setBackground(Color.blue);
//here you can fool around with the pane:
//first, you can see how the layered pane works by switching the
//DEFUALT_LAYER and PALLETTE_LAYER back and forth between the two panels
//and re-compiling to see the results
awtPanel.setSize(200,300);
frame.getLayeredPane().add(awtPanel, JLayeredPane.DEFAULT_LAYER);
//next you comment out the above two lines and
//uncomment the following line. this will give you the desired effect of
//awtPanel filling in the entire frame, even on a resize.
//frame.add(awtPanel);

Panel awtPanel2 = new Panel();
awtPanel2.setBackground(Color.red);
awtPanel2.setSize(300,200);
frame.getLayeredPane().add(awtPanel2,JLayeredPane.PALETTE_LAYER);
}

关于java - Swing 重叠组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com