我已经使用JLayeredPane查看了其他stackoverflow和许多其他示例,但我无法解决我的问题。
框架类 - >主要JPanel类 - > 2个JPanel课程
我将Main JPanel设置为Border布局,并且我在主JPanel中将2个JPanel设置为North和South。 North JPanel有setPreferredSize。
我遇到的问题是当我缩小窗口大小时,South Panel中我声明的按钮被隐藏了。即使窗口减少,我仍然希望用户可以看到按钮(南面板)。
JPanel mainPanel = new JPanel(new BorderLayout());
//North panel
JPanel northPanel = new JPanel();
northPanel.setLayout(new GridBagLayout());
northPanel.setPreferredSize(new Dimension(600, 350));
northPanel.add(example..)
......
//South panel
JPanel southPanel = new JPanel(new BorderLayout()););
JButton button1 = new JButton();
JButton button2 = new JButton();
southPanel.add(button1, BorderLayout.WEST);
southPanel.add(button2, BorderLayout.EAST);
//Add north and south panels to main panel
this.mainPanel.add(northPanel, BorderLayout.NORTH);
this.mainPanel.add(southPanel, BorderLayout.SOUTH); //want these buttons
//to be visible even when window size is reduced.
//but now the buttons gets hidden behind the north panel.
无论窗口大小如何,如何确保南面板始终可见?
希望我的解释有意义并且谢谢你!
答案 0 :(得分:2)
我遇到的问题是当我缩小窗口大小时,South Panel中我声明的按钮会被隐藏。
面板上的组件基于其ZOrder绘制。当一个组件被添加到面板时,它被赋予更高的ZOrder。 Swing实际上首先使用最高的ZOrder绘制组件。
所以不要这样做:
panel.setLayout( new BorderLayout() );
panel.add( new JButton("NORTH"), BorderLayout.NORTH );
panel.add( new JButton("SOUTH"), BorderLayout.SOUTH );
你可以这样做:
panel.setLayout( new BorderLayout() );
panel.add( new JButton("SOUTH"), BorderLayout.SOUTH );
panel.add( new JButton("NORTH"), BorderLayout.NORTH );
现在“南”按钮将被涂在“北”按钮的顶部。当然,只有当南部分不透明时,这才有效。