經過一段時間後,我找不到任何令人滿意的解決方案。我認爲對話框的大小調整是直接在操作系統級別處理的,因此您只能說您希望它完全不可調整大小或完全可調整大小。
以下代碼將始終阻止對話框變大,但當用戶調整對話框大小時,對話框的邊框仍會移動。
另一個選項,也是由radai建議的,將防止調整大小並設置一個自定義內容窗格,其中包含監聽鼠標並相應調整大小的鼠標偵聽器。但是,我認爲這對用戶來說不會是非常原生的(我不認爲你能夠捕捉對話框邊界上的事件)。
import java.awt.Frame;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JDialog;
import javax.swing.JRootPane;
import javax.swing.SwingUtilities;
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
init();
}
});
}
public static void init() {
final int staticHeight = 150;
final JDialog dialog = new JDialog((Frame) null) {
@Override
protected JRootPane createRootPane() {
JRootPane rp = new JRootPane() {
@Override
public void reshape(int x, int y, int w, int h) {
super.reshape(x, y, w, staticHeight);
}
};
rp.setOpaque(true);
return rp;
}
@Override
public void reshape(int x, int y, int width, int height) {
super.reshape(x, y, width, staticHeight);
}
};
dialog.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
dialog.setSize(dialog.getWidth(), staticHeight);
}
});
dialog.pack();
dialog.setVisible(true);
}
}
+1,你讓我學到的東西今天:-) –