我在一个外部类中有一个JLabel对象,想在内部类中修改其text属性,可是在内部类中得到的这个JLabel对象却处于invalid状态,请高手指点迷津!
代码如下:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
public class Repair {
private JLabel l_state = new JLabel();
private JTextField tf_ip;
private JTextField textField;
private JTextField tf_echoNum;
private JTextField tf_bytes;
private JFrame frame;
private static String testHost = "202.204.48.66 ";
private static int sendBytes = 1;
private static int echoNum = 1;
private static int repairFrequency = 5000;
private static Repair m_instance = null;
private static Timer timer = new Timer();
private static TimerTask task = new RepairTask();
/**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
try {
Repair window = new Repair();
window.frame.setVisible(true);
timer.scheduleAtFixedRate(task, 0, Repair.getInstance()
.getRepairFrequency());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the application
*/
private Repair() {
initialize();
}
public static Repair getInstance() {
if (m_instance == null) {
synchronized (Repair.class) {
if (m_instance == null) {
m_instance = new Repair();
}
}
}
return m_instance;
}
/**
* Initialize the contents of the frame
*/
private void initialize() {
frame = new JFrame();
frame.setResizable(false);
frame.setIconImage(new ImageIcon( "tips.gif ").getImage());
frame.setTitle( "J.L网络修复器 ");
frame.setSize(308, 207);
frame.setLocation((int) (Toolkit.getDefaultToolkit().getScreenSize()
.getWidth() / 2 - frame.getWidth() / 2), (int) (Toolkit
.getDefaultToolkit().getScreenSize().getHeight() / 2 - frame
.getHeight() / 2));