我的java程序正在创建给定JFrame窗口的几个实例,但是,jframe接缝可以在不同实例之间随意改变大小(从小到大)。也就是说,假设我的程序生成了10个jframe实例,那么7个可能是正确的大小,但是3个更大。这是我的代码:
public class ConvertionDialog extends JFrame{
private JComboBox<String> selection;
private JButton okButton;
public ConvertionDialog(){
super("Select Output Format");
this.setAlwaysOnTop(true);
this.setSize(new Dimension(500,55));
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.selection=new JComboBox<String>(GUI.getInstance().getRdfNotations());
this.okButton=new JButton("OK");
this.setLayout(new BorderLayout());
this.add(this.selection,BorderLayout.CENTER);
this.add(this.okButton,BorderLayout.EAST);
this.setVisible(true);
}
}
使用简单的new ConvertionDialog();
答案 0 :(得分:3)
应在Event Dispatch Thread(EDT)上创建所有Swing组件。当你得到随机结果时,问题可能是因为你没有在EDT上创建GUI。
查看How to Make Frames上Swing教程中的FrameDemo
示例代码。代码将向您展示如何更好地构建代码,以便在EDT上创建GUI。
您还应该阅读Concurrency in Swing
教程中的部分,了解有关EDT的详细信息以及您需要执行此操作的原因。
如果问题仍然存在,那么您需要发布一个显示问题的正确SSCCE并列出您的操作系统和JDK版本,以便使用这些平台的人可以测试代码以查看它们是否存在相同的问题。