【问题标题】:JDialog allow user to only change width of the dialogJDialog 允许用户只改变对话框的宽度
【发布时间】:2011-11-05 22:07:25
【问题描述】:

有谁知道是否可以限制用户如何调整 JDialog 的大小?

我知道我可以调用方法 setResizible(boolean) 并禁用或启用用户调整 JDialog 的大小,但是有没有办法限制用户更改窗口的高度但允许他更改宽度?

如果我创建的对话框垂直增长,它看起来很有趣,但水平增长组件可能对用户有益。

提前致谢。

【问题讨论】:

  • 如果我的字体有不同的指标怎么办?你用的是什么布局?
  • 想都别想 - 没有比可见区域下方的按钮不可调整大小的对话框更糟糕的了

标签: java swing jdialog


【解决方案1】:

您可以在 JDialog 中添加 ComponentListener,并在高度发生变化时签入 componentResized。这可以通过以这种方式扩展 JDialog 类来实现:

public class Dialog extends javax.swing.JDialog {

    public Dialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        final int h = getHeight();
        addComponentListener(new ComponentAdapter() {

            @Override
            public void componentResized(ComponentEvent e) {
                Rectangle b = getBounds();
                if (b.height != h) {
                    b.height = h;
                    setBounds(b);
                }
                super.componentResized(e);
            }
        });
    }
}

【讨论】:

  • 虽然这个技巧有效,但结果看起来很难看。有可见的重绘文物。
猜你喜欢
  • 2011-10-14
  • 2014-10-05
  • 2015-07-07
  • 1970-01-01
  • 2019-06-11
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
相关资源
最近更新 更多