JDialog позволяет пользователю изменять только ширину диалога - PullRequest
3 голосов
/ 06 ноября 2011

Кто-нибудь знает, возможно ли ограничить, как пользователь изменяет размер JDialog?

Я знаю, что могу вызвать метод setResizible (логический), который отключает или позволяет пользователю изменять размер JDialog, ноЕсть ли способ запретить пользователю изменять высоту окна, но позволяет ему изменять ширину?

Диалог, который я создаю, выглядит забавно, если он растет вертикально, но горизонтальный рост компонента может быть полезным для пользователя.

Заранее спасибо.

1 Ответ

3 голосов
/ 06 ноября 2011

Вы можете добавить ComponentListener к JDialog и проверить 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);
            }
        });
    }
}
...