JTextField的size设置无效,如何解决?
问题描述:
下面是我的代码
[code="java"]
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Timer extends JFrame {
/**
*
*/
private static final long serialVersionUID = 7904947045842215550L;
private JComboBox hourBox;
private JTextField timerConsole = new JTextField("");
private int hour = 1;
private int sec;
private Font f = new Font("宋体", 0, 14);
private int width = 300;
private int height = 500;
public Timer() {
setTitle("酒店房态定时更新器");
setSize(width, height);
Container contentPanel = getContentPane();
JPanel timePanel = new JPanel();
timePanel.setLayout(new GridLayout(4, 2));
JLabel subLable = new JLabel("设置更新频率(单位/小时)");
subLable.setFont(f);
timePanel.add(subLable);
hourBox = new JComboBox();
timePanel.add(hourBox);
for (int i = 1; i <= 24; i++) {
hourBox.addItem(i);
}
hourBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
hour = (((Integer) hourBox.getSelectedItem()).intValue());
}
});
subLable.setFont(f);
timerConsole.setSize(width, 800);
timePanel.add(timerConsole);
contentPanel.add(timePanel, BorderLayout.CENTER);
JButton check = new JButton("开始");
check.setFont(f);
contentPanel.add(check, BorderLayout.SOUTH);
check.addActionListener(new ActionListener() {
public boolean stop = false;
public void actionPerformed(ActionEvent evt) {
JButton check = (JButton) evt.getSource();
sec = hour * 60 * 60;
Thread t = new Thread() {
public void run() {
for (int i = 0; i < sec; i++) {
try {
if (stop) {
interrupt();
} else {
timerConsole.setText("已经过去" + i + "秒");
sleep(1000);
}
} catch (InterruptedException e) {
}
}
}
};
if (check.getText().equals("开始")) {
check.setText("停止");
stop = false;
t.start();
} else {
stop = true;
check.setText("开始");
timerConsole.setText("");
}
}
});
}
}
[/code]
timerConsole.setSize(width, 800);这里设置的是无效的
如何才能让它设置有效?
答
timePanel没有设置LayoutManager。改改试试看!