2011-11-05 31 views
3

有誰知道是否可以限制用戶調整JDialog的大小?JDialog允許用戶只更改對話框的寬度

我知道我可以調用方法setResizible(boolean),並禁用或使用戶可以調整JDialog的大小,但有沒有辦法限制用戶改變窗口的高度,但允許他改變寬度?

我創建的對話框看起來很有趣,如果它垂直增長,但水平增長的組件可能會對用戶有益。

在此先感謝。

+1

如果我的字體具有不同的度量標準,該怎麼辦?你使用什麼佈局? – trashgod

+0

根本就沒有想到它 - 沒有什麼比可見區域下面的按鈕不可調整的對話更糟糕 – kleopatra

回答

3

您可以將一個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); 
      } 
     }); 
    } 
}