Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将JPanel高度设置为窗口高度的百分比_Java_Windows_Swing_Jframe_Jpanel - Fatal编程技术网

Java将JPanel高度设置为窗口高度的百分比

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

我一直在尝试将jpanel的高度设置为窗户高度的80%。我每次这样做都会创建一个小矩形,或者填充整个窗口。目前,这是我的代码

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%。