我正在使用 JLayeredPane
开发一个 Swing GUI。JFrame
有一个 JLayeredPane
,其中包含两个 J 面板
。后来我想在JPanel
s中显示一些组件,我剪掉了这部分代码,使它更短。
如何将JFrame
调整为JPanel
的大小?frame.pack()
不起作用,如果没有行设置首选大小,GUI将以最小大小显示。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class TestGUI {
private JFrame frame;
private JLayeredPane layeredPane;
private JPanel panelBottom;
private JPanel panelTop;
private MainMenuBar menuBar;
public TestGUI() {
// panel bottom:
panelBottom = new JPanel();
panelBottom.setSize(1000, 500);
panelBottom.setBackground(new Color(0, 100, 0, 100));
panelBottom.setLayout(new GridBagLayout());
// panel top:
panelTop = new JPanel();
panelTop.setSize(950, 450);
panelTop.setBackground(new Color(0, 0, 100, 100));
panelTop.setLayout(new GridBagLayout());
// layered pane:
layeredPane = new JLayeredPane();
layeredPane.add(panelBottom, 1);
layeredPane.add(panelTop, 0);
// frame building:
frame = new JFrame();
menuBar = new MainMenuBar();
frame.setJMenuBar(menuBar);
frame.setLayout(new BorderLayout());
frame.setPreferredSize(new Dimension(1100, 600)); // <-- Without this the GUI will be very small
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(layeredPane, BorderLayout.CENTER);
frame.pack(); // <-- does not work!
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
new TestGUI();
}
}
编辑:我可以更改首选的大小行以适应最大的JPanel,但我提出这个问题是因为我希望< code>JFrame根据< code>JPanel的大小动态调整大小。
正如如何使用分层窗格:在分层窗格中布局组件中所建议的,“尽管分层窗格默认没有布局管理器,但您仍然可以为分层窗格分配布局管理器。”对于重叠的面板,请使用此处看到的Overlayout
。
或者,使用 JInternalFrame
,它允许您单独打包()
内部帧,如此处和此处所示。
我一直在关注Oracle的JLayeredPane教程,但它们的布局方式让我感到困惑,也没有理解我想要做什么。 我有一个应用程序,到目前为止还没有层的概念。所有东西都在JFrame中的一个单层中布局。
但当我执行我的JFrame并单击该按钮时,JFrame不会出现。有谁能帮我一下吗? 谢谢!
我制作了一个包含三个jpanel的jframe,这三个panel将jframe分成三个相等的部分。每一个面板都包含一个图像。我想调整图像和面板的大小,当帧的大小从高到低的时候。有人能告诉我如何做吗。
我正在开发一个精灵编辑器。我有一个扩展JPanel的类,在该类中,我使用JLayeredPane作为容器。在底层,有一个带有ImageIcon的JLabel,在顶层有一个JPanel,我在其中绘制了一个网格。当代码运行时,我做了一些基本的数学运算,将JLayeredPane的首选大小设置为屏幕分辨率高度的85%左右。 我的问题是,当用户想要在其上绘制新画布时,我会用JOptionPane询问用户想
问题内容: 允许用户调整窗口的宽度和高度。是否存在允许用户仅调整高度大小的方法? 谢谢。 编辑: 下面的解决方案似乎不起作用。在360x600 JFrame上, 仍然允许完全拉伸JFrame的宽度,而设置则不允许任何拉伸。 问题答案: 下面的代码可以正确完成工作。
我对JPanel和JFrame还是个新手,可能没有按照我应该的方式使用它们。我正在尝试创建Pong游戏,在创建JFrame并将JPanel添加到它之后,我可以调整JPanel的大小,但我不知道如何调整JFrame的大小以适应它。Game类扩展了JPanel。 主: 编辑: 将setSize更改为setPreferredSize,然后为JFrame调用pack()就可以解决所有问题。