Java 仅在必要时显示滚动条

Java 仅在必要时显示滚动条,java,swing,scroll,Java,Swing,Scroll,我想做如下事情: public class MyCustomDialog extends JDialog { public MyCustomDialog() { if (getClientVertScreenSize() < 800) { // Set the vertical size as 600, and give them a scroll pane to navigat

我想做如下事情:

    public class MyCustomDialog extends JDialog 
    {

       public MyCustomDialog()
       {
          if (getClientVertScreenSize() < 800)
          {
            // Set the vertical size as 600, and give them a scroll pane to navigate to the bottom of the gui.
          }
          else
          {
             setSize(600, 800); // No need to add a scroll pane.
          }
       }

    }
公共类MyCustomDialog扩展JDialog
{
公共MyCustomDialog()
{
如果(getClientVertScreenSize()<800)
{
//将垂直大小设置为600,并给他们一个滚动窗格以导航到gui的底部。
}
其他的
{
setSize(600800);//无需添加滚动窗格。
}
}
}

问题是我不知道如何检查客户端的屏幕大小,所以我不知道如何编写构造函数所依赖的方法。

请参阅Toolkit.getDefaultToolkit().getScreenSize()

您可以做的就是将组件放在
JScrollPane
中,并将和滚动条策略设置为
[垂直|水平]_按需滚动条
。这样,只有当
JScrollPane
的大小小于组件的首选大小时,滚动条才会出现。

java.awt.Toolkit
有一个名为
getScreenSize()
的实例方法,该方法返回类型为
java.awt.Dimension
的对象。
Dimension
是一个不可变的对象(不能更改),具有两个公共的最终字段:
width
height
。您可以获取
java.awt.Toolkit
的实例并执行

您应该使用以下代码:

import java.awt.Dimension;
import java.awt.Toolkit;

public class MyCustomDialog extends javax.swing.JDialog {
    public MyCustomDialog() {

        super(); // Invoke any JDialog initialization code.

        Toolkit t = Toolkit.getDefaultToolkit();
        if (t.getScreenSize().height < 600) {
            setSize(getWidth(), 600);
            // Add your scrollpane, etc.
        } else {
            setSize(600, 800); // No need to add a scroll pane.
        }
    }
}
导入java.awt.Dimension;
导入java.awt.Toolkit;
公共类MyCustomDialog扩展了javax.swing.JDialog{
公共MyCustomDialog(){
super();//调用任何JDialog初始化代码。
Toolkit t=Toolkit.getDefaultToolkit();
如果(t.getScreenSize().高度<600){
设置大小(getWidth(),600);
//添加滚动窗格等。
}否则{
setSize(600800);//无需添加滚动窗格。
}
}
}

Nice,这正是我所想的,但如果内容无法放入JDialog,则会在JDialog中放置一个滚动条,对吗?这就是我的测试结果。然而,我正在尝试做一些稍微不同的事情。如果整个JDialog无法在客户机屏幕上显示,那么我希望整个GUI缩小。让我知道,如果有澄清。