Java将JPanel高度设置为窗口高度的百分比
我一直在尝试将jpanel的高度设置为窗户高度的80%。我每次这样做都会创建一个小矩形,或者填充整个窗口。目前,这是我的代码Java将JPanel高度设置为窗口高度的百分比,java,windows,swing,jframe,jpanel,Java,Windows,Swing,Jframe,Jpanel,我一直在尝试将jpanel的高度设置为窗户高度的80%。我每次这样做都会创建一个小矩形,或者填充整个窗口。目前,这是我的代码 Toolkit tk = Toolkit.getDefaultToolkit(); int xSize = ((int) tk.getScreenSize().getWidth()); int ySize = ((int) tk.getScreenSize().getHeight()); window.setSize(xSize,ySize); JPanel
Toolkit tk = Toolkit.getDefaultToolkit();
int xSize = ((int) tk.getScreenSize().getWidth());
int ySize = ((int) tk.getScreenSize().getHeight());
window.setSize(xSize,ySize);
JPanel p = new JPanel();
p.setBackground(Color.PINK);
p.setLayout(new BorderLayout());
int gameHeight = (int)(Math.round(ySize * 100.0/window.getHeight()));
int gameWidth = (int)(Math.round(xSize * 100.0/window.getWidth()));
p.setPreferredSize(new Dimension(gameHeight, gameWidth));
p.add(new JLabel(" "));
window.add(p, BorderLayout.SOUTH);
你的数学有点不对劲 要获取80%的值,应将其乘以
0.80
,因此希望面板高度为ySize*0.80
,面板宽度为xSize*0.80
int gameHeight = (int) (Math.round(ySize * 0.80));
int gameWidth = (int) (Math.round(xSize * 0.80));
p.setPreferredSize(new Dimension(gameWidth, gameHeight));
谢谢你的快速回复,但在这一点上,以及Quilliom的回答中,面板占据了整个窗口,即使我在玩数学。当然,我的数学是错的,我没用了,哈哈,你在任何时候都在你的帧对象上调用
pack()
?为了使首选大小生效,您需要这样做。或者,使用p.setSize(gameWidth,gameHeight)
;现在在我的回答中解决这个问题。我只想指出一些问题。如果希望窗口大小为屏幕大小的80%,则应将框架设置为80%。如果面板的比例为80%,则表示框架的比例约为82-85%。