关于如何在元素太大时自动调整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);
输出示例:
答案 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);
希望这会有所帮助:)