2016-09-06 84 views
-1

我一直在研究30分钟,当元素太大时如何自动调整JFrame的大小。我试图在JFrame内部安装线段,但它总是超出空间,但不会自动生成更多空间。如果元素太大,如何自动调整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

为了更好地帮助越早请发表[MCVE] – Frakcool

+0

规模有多大?添加滚动?缩放到一个优先大小?你想从我们这里得到什么?对于mor space连接4个监视器 – Yev

+0

如果600×600太小,请更改'setSize(600,600)'语句中的值。如果这不是一个合适的解决方案,你必须在你的问题中包含实际需求。 – Holger

回答

1

有些事情要考虑:

  • 如果你是在面板上做的风俗画,记得面板的尺寸它不是由你改变正在绘制。 例如,如果“最后”点(我的意思是具有最大x和y值的点)以(1000,1000)坐标绘制,则应该设置面板的首选大小以包含它。为了让您的应用程序使用组件的首选大小,应该调用application.pack()(其中应用程序是您的JFrame对象),而不是手动设置大小。

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

所以你要考虑这个小例子,根据您的代码:

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); 

希望这有助于:)