JAVA编程中的一点问题

[复制链接]
查看11 | 回复4 | 2010-12-16 15:48:52 | 显示全部楼层 |阅读模式
虚拟机说主函数无法运用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();
}
}

回复

使用道具 举报

千问 | 2010-12-16 15:48:52 | 显示全部楼层
b.addActionListener(this);这句 已经加了监听,会调监听方法,所以在主方法中就不需要再调监听方法。直接new ProgressBarDemo();就可以了
回复

使用道具 举报

千问 | 2010-12-16 15:48:52 | 显示全部楼层
你已经在构造方法中添加了监听了,测试的时候只需要实例一个对象就可以了public class test { public static void main(String[] args) {new ProgressBarDemo(); }}
回复

使用道具 举报

千问 | 2010-12-16 15:48:52 | 显示全部楼层
楼上是对的,虽然swing是很少用,但是也是基础
回复

使用道具 举报

千问 | 2010-12-16 15:48:52 | 显示全部楼层
swing 已经基本没前途了 赶紧好好学 javaee吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行