朋友如果你是为了看到JTextField的话,就把你上面代码中的 方法:
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField(20);
jTextField.setText("" + count);
jTextField.setEnabled(false) ;
}
return jTextField;
}
改成
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField(20);
jTextField.setBounds(20, 100, 100, 25);
jTextField.setText("" + count);
jTextField.setEnabled(false) ;
}
return jTextField;
}就可以了
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField(20);
jTextField.setText("" + count);
jTextField.setEnabled(false) ;
}
return jTextField;
}
改成
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField(20);
jTextField.setBounds(20, 100, 100, 25);
jTextField.setText("" + count);
jTextField.setEnabled(false) ;
}
return jTextField;
}就可以了
// TODO Auto-generated method stub
while(!stop){
while(!pause){
try{
Thread.sleep(1000);
jTextField.setEnabled(true) ;
jTextField.setText("" + (count++));
jTextField.setEnabled(false) ;
}
catch(InterruptedException exp){
};
}
} // end while stop
}//run
定义属性时最好初始化一下,增加程序可读性。2: if (jButton2 == null) 这里的null代表无参对吗? 为什么要判断呢? 是否出于强壮性的考虑.
代表jButton2 指向null3: jContentPane.add(getJTextField(), null); 中的null是何含义?
public void add(Component comp,Object constraints)
constraints - an object expressing layout contraints for this component
null是一个空的布局管理器。
4: 我想添加一个 jTextField 来显示count的值, 在窗口上不可见呢?
你的线程没有启动
public static void main(String[] args) {
GuiThreadTest app = new GuiThreadTest() ;
app.setVisible(true) ;
Thread first = new Thread(new GuiThreadTest());
first.start();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
}
试一下,同时在你的
run()方法的循环里面加一句 System.out.println(count);
看看,到底有没有在累加。
* Created on 2004-12-13
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*//**
* @author kyle
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GuiThreadTest extends JFrame { private javax.swing.JPanel jContentPane = null;
private long count = 0;
private boolean stop =false ;
private boolean pause = false ;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JTextField jTextField = null;
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/ /**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() { // Play
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(24, 53, 61, 22); // 澄恢?
jButton.setText("Play");
jButton.setName("playButton");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jButton1.setEnabled(true) ;
jButton.setEnabled(false) ;
jButton2.setEnabled(true) ;
stop = false;
pause = false;
// System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
}); }
return jButton;
}
/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(111, 53, 73, 21);
jButton1.setText("pause");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jButton.setEnabled(true) ;
jButton1.setEnabled(false);
jButton2.setEnabled(true);
pause = true;
// System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
}
return jButton1; // pause
}
/**
* This method initializes jButton2
*
* @return javax.swing.JButton
*/
private JButton getJButton2() {
if (jButton2 == null) {
jButton2 = new JButton();
jButton2.setBounds(194, 52, 61, 25);
jButton2.setText("Stop");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jButton.setEnabled(true);
jButton1.setEnabled(false) ;
jButton2.setEnabled(false) ;
stop =true ;
// System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
}
return jButton2; // Stop
}
private JTextField getJTextField() {
if (jTextField == null) {
jTextField = new JTextField(20);
jTextField.setBounds(20, 100, 100, 25);
jTextField.setText("" + count);
jTextField.setEnabled(false) ;
}
return jTextField;
}
public static void main(String[] args) {
GuiThreadTest app = new GuiThreadTest() ;
app.setVisible(true) ;
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
}
/**
* This is the default constructor
*/
public GuiThreadTest() {
super(); // JFrame
initialize();
TestThread t= new TestThread();
t.start();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300,250);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private javax.swing.JPanel getJContentPane() {
if(jContentPane == null) {
jContentPane = new javax.swing.JPanel();
jContentPane.setLayout(null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getJButton2(), null);
jContentPane.add(getJTextField(), null);
}
return jContentPane;
}
class TestThread implements Runnable //extends Thread
{
public void run() {
// TODO Auto-generated method stub
while(!stop){
while(!pause){
try{
Thread.sleep(1000);
jTextField.setEnabled(true) ;
jTextField.setText( "" + (count++) );
jTextField.setEnabled(false) ;
}
catch(InterruptedException exp){
};
}
} // end while stop
}
}}