如果元素太大,如何自动调整JFrame的大小?

时间:2016-09-06 21:52:24

标签: java swing jframe jpanel

关于如何在元素太大时自动调整JFrame的大小,我已经研究了30分钟。我试图在JFrame内拟合线段,但它总是超出空间但不会自动生成更多空间。

我该怎么办?

DrivePanel panel = new DrivePanel(aCar, coordinates); 
JFrame application = new JFrame();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
application.add(panel); 
application.setSize(600,600);
application.setVisible(true);

输出示例:

1 个答案:

答案 0 :(得分:1)

需要考虑的一些事项:

  • 如果您在面板上进行自定义绘画,请记住面板的大小不会因您绘制的内容而改变。 例如,如果" last" point(我的意思是x和y值最大的点)是在(1000,1000)坐标处绘制的,你应该设置面板的首选大小以便包含它。

  • 要让您的应用程序使用组件的首选大小,您应该调用application.pack()(其中application是您的JFrame对象),而不是手动设置大小。

  • 如果您的面板太大而无法在屏幕上显示,则可以将其添加到JScrollPane,然后将滚动窗格添加到您的jframe(而不是面板本身)。 如果您的面板无法完全显示在屏幕上,滚动窗格将自动使用滚动条。

请根据您的代码考虑这个小例子:

DrivePanel panel = new DrivePanel(aCar, coordinates); 
JFrame application = new JFrame();

application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setPreferredSize(new Dimension(1000,1000)); // change 1000,1000 with the coordinates you need ...
JScrollPane scrollPane = new JScrollPane(panel);
application.add(scrollPane); 
application.pack();
application.setVisible(true);

希望这会有所帮助:)