[英]JFrame Components Not Appearing
我对Java还是很陌生,我正在尝试组装一个简单的时间计算器。
为什么add()方法只会抛出我添加的最后一件事? 当我运行程序时,它仅显示“天”,而不是文本框和年份标签。
import javax.swing.*;
public class TimeCalculator extends JFrame
{
public static void main(String[] args)
{
JOptionPaneMultiInput window = new JOptionPaneMultiInput();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(300,500);
window.setVisible(true);
}
public TimeCalculator()
{
super("Time Calculator");
JTextField yearsField = new JTextField(5);
JTextField daysField = new JTextField(5);
JTextField hoursField = new JTextField(5);
JTextField minutesField = new JTextField(5);
JTextField secondsField = new JTextField(5);
JLabel yearsLabel = new JLabel();
JLabel daysLabel = new JLabel();
JLabel hoursLabel = new JLabel();
JLabel minutesLabel = new JLabel();
JLabel secondsLabel = new JLabel();
JCheckBox yearsCheckbox = new JCheckBox();
JCheckBox daysCheckbox = new JCheckBox();
JCheckBox hoursCheckbox = new JCheckBox();
JCheckBox minutesCheckbox = new JCheckBox();
JCheckBox secondsCheckbox = new JCheckBox();
JLabel yearsCLabel = new JLabel();
JLabel daysCLabel = new JLabel();
JLabel hoursCLabel = new JLabel();
JLabel minutesCLabel = new JLabel();
JLabel secondsCLabel = new JLabel();
JButton convertButton = new JButton();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
yearsLabel.setText("Years");
daysLabel.setText("Days");
hoursLabel.setText("Hours");
minutesLabel.setText("Minutes");
secondsLabel.setText("Seconds");
yearsCLabel.setText("Yr");
daysCLabel.setText("D");
hoursCLabel.setText("Hr");
minutesCLabel.setText("Min");
secondsCLabel.setText("Sec");
convertButton.setText("Convert");
convertButton.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
//doConvert(evt); this will be added later once i figure everything out
}
});
add(yearsField);
add(yearsLabel);
add(daysField);
add(daysLabel);
}
}
main()
提到的JOptionPaneMultiInput
不属于发布的源代码。 考虑发布SSCCE 。
答案为:
当我运行程序时,它仅显示“天”,而不是文本框和年份标签。
TimeCalculator
中出现的TimeCalculator
扩展了JFrame
。 默认情况下, JFrame
使用BorderLayout
布局。 使用BorderLayout
,没有约束参数的add()
方法将导致BorderLayout.CENTER
约束添加组件。 因此,您可以将对象添加到BorderLayout
的中心。 随后的每个add()都会替换之前添加的组件。 最后,仅剩daysLabel
。
有关更多详细信息,请参见如何使用BorderLayout 。 另请参阅《其他布局管理器的布局管理器视觉指南》,因为框架中有许多控件,如果没有其他嵌套面板,则很难进行布局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.