帮我解决定给高分
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.*;
import javax.swing.Timer;
public class myjindu
{
public static void main(String[]args)
{
Myframe frame=new Myframe();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class Myframe extends JFrame
{
public Myframe()
{
this.setSize(400,400);
this.setResizable(false);
this.setLocation(200,200);
Container contentPane=getContentPane();
contentPane.add(panel,BorderLayout.SOUTH);
panel.add(text,BorderLayout.CENTER);
panel.add(strbtn,BorderLayout.SOUTH);
contentPane.add(new JScrollPane(text),BorderLayout.CENTER);
panel.add(probar);
probar.setStringPainted(true);
strbtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
probar.setMaximum(1000);
thread=new Mythread(1000);
time.start();
thread.start();
strbtn.setEnabled(false); /*set the startbutton attribute enable false*/
}
}
);
}
private JPanel panel=new JPanel();
private TextArea text=new TextArea();
private JButton strbtn=new JButton("Start");
private JProgressBar probar=new JProgressBar();
private Mythread thread;
Timer time=new Timer(500,new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
if(thread.getcurrent()==thread.target)
{
time.stop();
strbtn.setEnabled(true);
}
int current=thread.getcurrent();
text.append(current+"\n");
probar.setValue(current);
}
}
);
}
class Mythread extends Thread
{
public Mythread(int settarget)
{
target=settarget;
}
public void run()
{
try
{
while(current<target && !interrupted())
{
current=current+1982;
sleep(10);
}
}
catch(InterruptedException e)
{
}
}
public int gettarget()
{
return target;
}
public int getcurrent()
{
return current;
}
public int target;
private int current;
}
按道理应该是线程不中断
最终current的值超过int的范围
为什么出来的结果全是1982?