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。改改试试看!