当前位置: 首页 > 面试题库 >

您可以在JFrame内为JPanel设置永久大小吗?

唐阳泽
2023-03-14
问题内容

我当前的问题是我有一个带有2x2 GridLayout的JFrame。在其中一个正方形内,我有一个JPanel,用于显示网格。我正在使用Java
swing库进行实地调查…

图片

Java将自动扩展每个JLabel以适合屏幕。我希望它只是那些蓝色正方形(水)和黑色边框,而不是那个灰色空间。有没有一种方法可以永久设置JPanel的大小,这样我就不必在获得确切尺寸之前将JFrame的大小更改一百万次,从而使灰色空间消失了?

我也想设置这些按钮的大小,以便它们不会太大(BorderLayout用于按钮和TextField)


问题答案:

如果要使两个棋盘大小保持相同,则需要将它们各自包含在自己的中JPanel。将每个父级JPanel的布局类型设置为GridBagLayout。设置每个棋盘组件的preferredSize,然后将它们添加到各自的容器中。默认情况下,GridBagLayout应将每个板放置在父JPanel的中心。因此,当调整窗口大小时,JPanel父区域将变大或变小,但是内部的棋盘组件将保持相同的大小。

另外,您可以在调整窗口大小时使蓝色方块缩放到正确的大小,方法是让每个棋盘方块都JPanel带有一个BorderLayout布局管理器,然后将JLabel(带有蓝色背景色)添加到其BorderLayout.CENTER位置。

至于您的按钮,请尝试以下操作:

JPanel theButtonPanel = new JPanel(new BorderLayout());
JButton button1 = new JButton("Fire");
JButton button2 = new JButton("Pass");
JButton button3 = new JButton("Forfiet");

JPanel innerButtonContainer = new JPanel(new Grid(1, 3, 8, 8));
innerButtonContainer.add(button1);
innerButtonContainer.add(button2);
innerButtonContainer.add(button3);

theButtonPanel.add(innterButtonContainer);

最后,考虑为您的Swing用户界面使用设计工具。Netbeans内置了 出色的UI
设计器。在此处下载Netbeans 。



 类似资料:
  • 我有一个JFrame,里面装满了JPanel(下面的代码)。 我正在使用JPanel在里面画东西,例如,我可以在任何我喜欢的地方画线,但是当添加JLabel到它的时候,我不能把它移动到它卡住的任何地方 但问题是他们建议的解决方案对我不起作用。 很抱歉,如果我不清楚,我试图在创建Surface之前和之后在函数initUI()中添加上面的内容。 但是在那之后,框架显示几乎(1,1)大小和它的空(如果我

  • 问题内容: 我有一个包含了一组在。每个都有不同的大小,我希望适应当前显示的大小(而不是适应的大小)。 我该如何实现? 问题答案: 通常是:如果您遇到布局问题,请 始终 使用适当的LayoutManager解决它。 切勿 调整组件的大小提示以达到您的目标。 在这种情况下,调整CardLayout特别容易。默认情况下,它将其prefSize计算为所有卡的prefSizes的最大值。只需子类化并实现以返

  • 下面是“DisplayImage”自定义面板相关部分的代码:

  • 问题内容: 我是Java的新手,开始学习挥杆技巧,并且在JFrame中调整JPanel的大小时遇到​​问题。我正在关注本教程: http://vincentramdhanie.blogspot.com/2009/11/cardlayout-with- netbeans.html 因为最终我将学习每种不同的布局,并且现在已经进入CardLayout。在上面,有一个JPanel用于状态面板。那也是我想

  • 我是Java新手,开始学习swing,在JFrame中调整JPanel的大小时遇到问题。我将学习本教程: http://vincentramdhanie.blogspot.com/2009/11/cardlayout-with-netbeans.html 因为最终我正在学习每一种不同的布局,现在我来到了CardLayout。在上面,有一个JPanel用于状态面板。这也是我想要做的,但是当我将一个J

  • 我有一个JFrame,我已经将布局设置到GroupLayout。 我添加了两个Jpanel即workingPanel(红色)和backgroundPanel(绿色)。 代码是`import javax.swing.;导入java.awt; 请帮帮我。