我似乎有其他人的相反問題。 我的JDialog默認最小化和最大化按鈕。 按下最大化按鈕時,對話框會最大化 - 但內容不會。它只是保持相同的大小,集中在一個巨大的對話框中。 只需抓住邊緣並重新調整對話框的大小就會發生同樣的情況。當最大化時,JDialog沒有做重新佈局
我試着添加一個WindowStateListener - 但它永遠不會被調用。 我添加了一個WindowListener - 它只在打開/關閉/激活/停用時被調用。
所以,我需要能夠獲得對話框內容來重新調整對話框大小,或者刪除最大化按鈕。 (我想擺脫最小化按鈕。)
我做了一個pack()後創建對話框,因爲對話框中的控件是從一個數據塊動態創建的,所以我不會沒有初始大小可以使用。
好的,這是代碼。所有生成的UI面板也都位於GridBagLayouts中。
public class FastAccessDialog extends JDialog implements BeanActionListener {
private static final long serialVersionUID = 1L;
private static final Cursor waitCursor = new Cursor(Cursor.WAIT_CURSOR);
private Cursor oldCursor;
private JPanel cmdOutput;
private JScrollPane cmdOutputScroll;
public FastAccessDialog(Frame owner, ObjectName bean, String methodName) throws InstanceNotFoundException, IntrospectionException,
ReflectionException, IOException {
super(owner);
setResizable(true);
setModal(false);
setTitle(BeanUtil.cleanUpCamelCase(methodName));
boolean enabled = (UIHintUtil.isEnabled(bean) == EnableState.ENABLED);
// Find the BeanOperationInfo for that method.
MBeanInfo info = JMXConnectionSingleton.getInstance().getMBeanInfo(bean);
MBeanOperationInfo[] operations = info.getOperations();
JComponent comp = null;
for (MBeanOperationInfo opInfo : operations) {
if (opInfo.getName().equals(methodName)) {
comp = OperationsManager.getInstance().createControls(bean, opInfo, this, true, enabled);
break;
}
}
if (comp == null) {
throw new IllegalArgumentException("Unknown method name: " + methodName);
}
Container cont = getContentPane();
cont.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(4, 4, 4, 4);
cont.add(comp, gbc);
cont.validate();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
pack();
}
});
return;
}
... other methods invoked when an operation is performed ...
... none of which are invoked before having the re-size problem ...
}
發佈一些代碼,以便我們可以看到發生了什麼。這通常與使用正確的LayoutManager並正確配置相關。 –
爲了儘快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –