虚拟机说主函数无法运用stateChange,,这是怎么回事啊
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
class ProgressBarDemo implements ActionListener,ChangeListener
{
JFrame frame=null; JProgressBar progressbar;
JLabel label;Timer timer;
JButton b;
public ProgressBarDemo()
{
frame=new JFrame("hoyo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content=frame.getContentPane();
label=new JLabel(" ",JLabel.CENTER);
progressbar=new JProgressBar();//创建一个进度条
progressbar.setOrientation(JProgressBar.HORIZONTAL);
progressbar.setMinimum(0);
progressbar.setMaximum(100);
progressbar.setValue(0);
progressbar.setStringPainted(true);
progressbar.addChangeListener(this);
progressbar.setPreferredSize(new Dimension(300,20));
progressbar.setBorderPainted(true);
progressbar.setBackground(Color.pink);
JPanel panel = new JPanel();
b=new JButton("安装");
b.setForeground(Color.blue);//添加事件监听
b.addActionListener(this); panel.add(b);
timer=new Timer(100,this);
content.add(panel,BorderLayout.NORTH);
content.add(progressbar,BorderLayout.CENTER);
content.add(label,BorderLayout.SOUTH);
frame.pack(); frame.setVisible(true);
}
//实现事件监听的方法
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b)
timer.start();
if(e.getSource()==timer)
{
int value=progressbar.getValue();
if(value<100)
{
progressbar.setValue(++value);
}
else
{
timer.stop(); frame.dispose();
}
}
}
public void stateChanged(ChangeEvent e1)
{
int value=progressbar.getValue();
if(e1.getSource()==progressbar)
{
label.setText("目前已完成进度:"+Integer.toString(value)+"%");
label.setForeground(Color.blue);
}
}
}
public class test
{
public static void main(String[] args)
{
ProgressBarDemo pro=new ProgressBarDemo();
new ProgressBarDemo().actionPerformed();
new ProgressBarDemo().stateChanged();
}
}
|