我似乎无法使JDialog小于Windows 10上的最小宽度(观察到Java 7及更高版本)。最小宽度似乎为230像素,即使指定了新的最小尺寸,也无法使其变小,如下面的代码所示:
import javax.swing.*;
import java.awt.*;
public class TestDialog {
public TestDialog() {
JDialog testDialog = new JDialog();
testDialog.setSize(new Dimension(10, 100));
testDialog.setMinimumSize(new Dimension(10, 100));
testDialog.setLocationRelativeTo(null);
testDialog.setVisible(true);
}
public static void main(String args[]) {
new TestDialog();
}
}
如何强制JDialog小于该值?
答案 0 :(得分:2)
问题似乎是默认的外观。
当我按照 Hovercraft Full Of Eels的建议设置testDialog.setUndecorated( true );
后尝试设置其他装饰风格时,出现了一个非常狭窄的装饰对话框:
class TestDialog {
public TestDialog() {
JDialog testDialog = new JDialog();
testDialog.setUndecorated( true );
testDialog.getRootPane( ).setWindowDecorationStyle(JRootPane.PLAIN_DIALOG );
testDialog.getContentPane().add(makeContent());
testDialog.setLocationRelativeTo(null);
testDialog.pack();
testDialog.setVisible(true);
}
private JPanel makeContent(){
JPanel pane = new JPanel(new GridLayout(0, 1));
pane.add(new JLabel(" 1 "));
pane.add(new JLabel(" 2 "));
pane.add(new JLabel(" 3 "));
return pane;
}
public static void main(final String args[]) {
new TestDialog();
}
}
答案 1 :(得分:1)
是的,将对话框设置为未修饰将起作用:
SwingUtilities.invokeLater(() -> {
JDialog testDialog = new JDialog();
testDialog.setUndecorated(true); // ****** here ******
testDialog.setSize(new Dimension(10, 100));
testDialog.setMinimumSize(new Dimension(10, 100));
testDialog.setLocationRelativeTo(null);
testDialog.setVisible(true);
});
不确定是否存在其他解决方案