【问题标题】:Panel size changes from computer to computer面板尺寸因电脑而异
【发布时间】:2012-03-14 16:36:39
【问题描述】:

我使用 swing (Java) 为我的计算软件设计了一个用户界面。我注意到,当我将软件移至笔记本电脑时,面板会超出屏幕,嵌套面板中也会出现一些类似的问题。这使得使用该软件非常困难。我该如何解决这个问题?

谢谢。

补充:部分代码如下:

   public GUI() {

            int width=1200;
            int height=950;
    setTitle("FEM Analysis");
    setSize(width, height);
    setLayout(new BorderLayout());
    setLocation(20, 20);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            .....}

【问题讨论】:

  • 您为容纳面板的容器使用了哪种布局?一些示例代码会有所帮助。您尝试使用的不同计算机的分辨率是相同还是不同?
  • 解决方案是不设置任何 JPanel 或窗口大小,而是使用适当的布局管理器,让他们设置每个组件及其容器的首选大小。
  • 感谢大家,对延迟回复表示歉意。布局是边框布局,当我移动到另一台具有不同分辨率的计算机时会出现问题。部分代码已添加到问题设置中。

标签: java swing screen-size


【解决方案1】:

您可能需要考虑(如果您还没有考虑的话)是使用屏幕尺寸来缩放具有不同分辨率的计算机之间的面板尺寸。例如,如果您这样声明宽度和高度:

private final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
private final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().getHeight();

然后,如果您将宽度或高度乘以一个值,例如 (0.8),将得到该值的 80%。

这是使用屏幕分辨率的绝佳指南:http://www.devdaily.com/blog/post/jfc-swing/java-swing-faq-how-determine-screen-size-resolution

希望这是您正在寻找和帮助的...

【讨论】:

  • 不正确,但手动设置任何尺寸通常不是一个好主意:-)
  • 感谢您的帮助,先生。是的,这就是我要找的。我没有使用屏幕尺寸来缩放尺寸。我会更正我的代码并让你知道结果。感谢您的链接。
  • getWidth() 和 getHeight() 方法返回一个 double not int
【解决方案2】:

您可能需要考虑在您的 GUI 组件上使用 pack()。它会自动缩小你的框架以很好地适应内容,而不是有很多空白:

public GUI() {
  // ...
  pack();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    相关资源
    最近更新 更多