Java JFrame不';不能适应规定的尺寸
JFrame不适合我设置的大小。有人知道为什么吗?我使用了Dimension类来指定框架的大小Java JFrame不';不能适应规定的尺寸,java,swing,size,jframe,Java,Swing,Size,Jframe,JFrame不适合我设置的大小。有人知道为什么吗?我使用了Dimension类来指定框架的大小 public void createBaseFrame() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } frame = ne
public void createBaseFrame() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
frame = new JFrame("Windows Shutdown Timer v" + CURRENT_VERSION);
frame.setLayout(new GridLayout(3, 1, 5, 5));
topPanel = new JPanel();
centerPanel = new JPanel();
bottomPanel = new JPanel();
topPanel.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY, 1));
centerPanel.setBorder(BorderFactory
.createLineBorder(Color.DARK_GRAY, 1));
bottomPanel.setBorder(BorderFactory
.createLineBorder(Color.DARK_GRAY, 1));
menuBar = new JMenuBar();
datei = new JMenu("Datei");
template = new JMenu("Vorlagen");
about = new JMenu("Über");
dateiClose = new JMenuItem("Programm beenden");
templateSave = new JMenuItem("Vorlage speichern");
templateExport = new JMenuItem("Vorlage exportieren");
templateImport = new JMenuItem("Vorlage importieren");
aboutInformation = new JMenuItem("Informationen");
aboutVisitWebsite = new JMenuItem("Webseite besuchen");
timerSetting = new JLabel("Zeit in Minuten:");
possibleActions = new JLabel("Aktion wählen:");
remainingTime = new JLabel(
"Verbleibende Zeit bis zum herunterfahren: 10:23 Minuten");
timeSpinner = new JSpinner();
String[] possibleActionsData = { "herunterfahren", "abmelden",
"neu starten", "sperren" };
actionBox = new JComboBox<String>(possibleActionsData);
timerButton = new JButton("Timer starten");
timerButton.setSize(new Dimension(150, 40));
datei.add(dateiClose);
template.add(templateSave);
template.add(templateImport);
template.add(templateExport);
about.add(aboutVisitWebsite);
about.add(aboutInformation);
menuBar.setSize(500, 5);
menuBar.add(datei);
menuBar.add(template);
menuBar.add(about);
topPanel.add(menuBar);
centerPanel.setLayout(new GridLayout(2, 2, 0, 0));
centerPanel.add(timerSetting);
centerPanel.add(timeSpinner);
centerPanel.add(possibleActions);
centerPanel.add(actionBox);
bottomPanel.setLayout(new GridLayout(1, 2, 0, 0));
bottomPanel.add(remainingTime);
bottomPanel.add(timerButton);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(500, 250));
frame.setLocationRelativeTo(null);
frame.add(topPanel);
frame.add(centerPanel);
frame.add(bottomPanel);
frame.setResizable(false);
frame.setVisible(true);
} // end createBaseFrame()
} // end class BaseFrame
public void createBaseFrame(){
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}捕获(例外e){
e、 printStackTrace();
}
frame=新JFrame(“Windows关机计时器v”+当前版本);
frame.setLayout(新的GridLayout(3,1,5,5));
topPanel=新的JPanel();
centerPanel=新的JPanel();
底部面板=新的JPanel();
topPanel.setBorder(BorderFactory.createLineBorder(Color.DARK_GRAY,1));
中心面板。订单(BorderFactory)
.createLineBorder(颜色为深灰色,1));
底部面板。订单(BorderFactory
.createLineBorder(颜色为深灰色,1));
menuBar=newjmenubar();
datei=新JMenu(“datei”);
模板=新JMenu(“沃拉根”);
关于=新JMenu(“Über”);
dateiClose=新的JMenuItem(“Programm beenden”);
templateSave=新的JMenuItem(“Vorlage Speichen”);
templateExport=新的JMenuItem(“Vorlage exportieren”);
templateImport=新JMenuItem(“Vorlage importieren”);
aboutInformation=新的JMenuItem(“信息”);
AboutVisitewSite=新的JMenuItem(“Webseite besuchen”);
timerSetting=新的JLabel(“以分钟为单位调整”);
可能性=新的JLabel(“Aktion wählen:”);
剩余时间=新JLabel(
“Verbleibend Zeit bis zum herunterfahren:10:23分钟”);
timeSpinner=newjspinner();
字符串[]possibleActionsData={“herunterfahren”,“abmelden”,
“东北星”、“斯佩伦”};
actionBox=新的JComboBox(可能的ActionsData);
timerButton=新的JButton(“计时器启动”);
timerButton.setSize(新尺寸(150,40));
datei.add(dateiClose);
template.add(templateSave);
template.add(templateImport);
template.add(templateExport);
about.add(aboutVisitWebsite);
about.add(aboutInformation);
菜单栏设置大小(500,5);
菜单栏。添加(日期i);
菜单栏添加(模板);
菜单栏。添加(关于);
topPanel.add(菜单栏);
setLayout(新的GridLayout(2,2,0,0));
中心面板。添加(时间设置);
添加(timeSpinner);
中心面板。添加(可能的操作);
centerPanel.add(actionBox);
setLayout(新的GridLayout(1,2,0,0));
底部面板。添加(剩余时间);
底部面板。添加(时间按钮);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(新尺寸(500250));
frame.setLocationRelativeTo(空);
框架。添加(托帕内尔);
添加框架(中心面板);
框架。添加(底部面板);
frame.setresizeable(false);
frame.setVisible(true);
}//end createBaseFrame()
}//结束类基架
导入语句和实例变量不在代码示例中。用setSize替换setPreferredSize调用 这个组件没问题。对于其他swing组件,请尽量不要使用setSize、setPreferedSize,而是使用布局。GridBagLayout很不错
干杯在将其显示之前,您必须调用
frame.pack()
,并使用preferredSize
属性而不是size
更好的方法是不要弄乱自然有一个组件的大小或首选大小。有关详细信息,请参阅。谢谢安德鲁!现在我使用DesignGridLayout API,它比swing布局管理器更舒适。我刚刚改变了整个方法。现在我使用DesignGridLayout API,它比swing布局管理器更舒适。