Java:获取JFrame内容的大小

Java:获取JFrame内容的大小,java,swing,jframe,frame,layout-manager,Java,Swing,Jframe,Frame,Layout Manager,如何获得JFrame=new JFrame()的实际内容大小 我正在尝试frame.getContentPane().getSize(),但由于某些原因,它一直返回0 代码: JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setExtendedState(JFrame.MAXIMIZED_BOTH); Dimension windowSize = frame.get

如何获得
JFrame=new JFrame()
的实际内容大小

我正在尝试
frame.getContentPane().getSize()
,但由于某些原因,它一直返回0

代码:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);
frame.setVisible(true);
输出:

java.awt.Dimension[width=0,height=0]

只能在渲染JFrame后获取大小,否则当前大小[0,0]。因此,只在
setVisible(true)
之后调用
getSize()

只是好奇--你为什么需要这些信息


编辑1
根据您的代码:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// Dimension windowSize = frame.getContentPane().getSize();
// System.out.println(windowSize);
frame.setVisible(true);

Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);

编辑2
您在评论中声明:


我需要将面板设置为内容窗格宽度的一半。谢谢

这个信息应该出现在你最初的问题中,因为它比你试图得到尺寸要重要得多。事实上,你的问题是一个很好的例子


解决方案不是使用布局管理器来获取大小,而是使用布局管理器来为您完成这项工作,这里的
GridLayout(1,2)
可以是您的票据。

您只能在呈现JFrame后获取大小,否则当前大小[0,0]。因此,只在
setVisible(true)
之后调用
getSize()

只是好奇--你为什么需要这些信息


编辑1
根据您的代码:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// Dimension windowSize = frame.getContentPane().getSize();
// System.out.println(windowSize);
frame.setVisible(true);

Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);

编辑2
您在评论中声明:


我需要将面板设置为内容窗格宽度的一半。谢谢

这个信息应该出现在你最初的问题中,因为它比你试图得到尺寸要重要得多。事实上,你的问题是一个很好的例子


解决方案不是使用布局管理器来获取大小,而是使用布局管理器来为您完成这项工作,这里的
GridLayout(1,2)
可以是您的票据。

您只能在呈现JFrame后获取大小,否则当前大小[0,0]。因此,只在
setVisible(true)
之后调用
getSize()

只是好奇--你为什么需要这些信息


编辑1
根据您的代码:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// Dimension windowSize = frame.getContentPane().getSize();
// System.out.println(windowSize);
frame.setVisible(true);

Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);

编辑2
您在评论中声明:


我需要将面板设置为内容窗格宽度的一半。谢谢

这个信息应该出现在你最初的问题中,因为它比你试图得到尺寸要重要得多。事实上,你的问题是一个很好的例子


解决方案不是使用布局管理器来获取大小,而是使用布局管理器来为您完成这项工作,这里的
GridLayout(1,2)
可以是您的票据。

您只能在呈现JFrame后获取大小,否则当前大小[0,0]。因此,只在
setVisible(true)
之后调用
getSize()

只是好奇--你为什么需要这些信息


编辑1
根据您的代码:

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
// Dimension windowSize = frame.getContentPane().getSize();
// System.out.println(windowSize);
frame.setVisible(true);

Dimension windowSize = frame.getContentPane().getSize();
System.out.println(windowSize);

编辑2
您在评论中声明:


我需要将面板设置为内容窗格宽度的一半。谢谢

这个信息应该出现在你最初的问题中,因为它比你试图得到尺寸要重要得多。事实上,你的问题是一个很好的例子


解决方案是不是获取尺寸,而是使用布局管理器为您完成这项工作,这里的
GridLayout(1,2)
可能是您的票据。

当您检索尺寸时,是否显示框架?显示一些代码。当您检索尺寸时,是否显示框架?显示一些代码。当您检索尺寸时,是否显示框架?显示一些代码。当您检索尺寸时,是否显示框架?显示一些代码。我需要将面板设置为内容窗格宽度的一半。Thanks@VinnieCaprarola:请参见编辑2。尝试边界布局,使用左面板和右面板(西面板和东面板);他们将用垂直线分割面板,并通过调整大小来保持面板的一半大小,而无需您进一步编码。我需要将面板设置为内容窗格宽度的一半。Thanks@VinnieCaprarola:请参见编辑2。尝试边界布局,使用左面板和右面板(西面板和东面板);他们将用垂直线分割面板,并通过调整大小来保持面板的一半大小,而无需您进一步编码。我需要将面板设置为内容窗格宽度的一半。Thanks@VinnieCaprarola:请参见编辑2。尝试边界布局,使用左面板和右面板(西面板和东面板);他们将用垂直线分割面板,并通过调整大小来保持面板的一半大小,而无需您进一步编码。我需要将面板设置为内容窗格宽度的一半。Thanks@VinnieCaprarola:请参见编辑2。尝试边界布局,使用左面板和右面板(西面板和东面板);他们将用垂直线划分面板,并通过调整大小来保持面板的一半大小,而无需您进一步编码。