我想用控制条控制风速,想用 public void stateChanged(ChangeEvent e) 改变时间Timer中的时间间隔 但是行不通啊
求高手解答?import javax.swing.*;
import java.awt.*;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.event.*;/*FanControl 类 按钮 风扇 滑动条 */ class FanControl extends JPanel implements ActionListener,ChangeListener
{
int i = 0;
int j = 50;
int m = 30; Timer t1 = new Timer(j,this);
Timer t2 = new Timer(j,this);
protected void paintComponent(Graphics g)
{
super.paintComponent(g);int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
int radius = (int)(Math.min(getWidth(),getHeight())*0.3);
int x = xCenter - radius;
int y = yCenter - radius;
g.fillArc(x,y,2*radius,2*radius,i,m);
g.setColor(Color.red);
g.fillArc(x,y,2*radius,2*radius,i + 90,m);
g.setColor(Color.yellow);
g.fillArc(x,y,2*radius,2*radius,i + 180,m);
g.setColor(Color.blue);
g.fillArc(x,y,2*radius,2*radius,i + 270,m);
g.setColor(Color.gray);
}/////////////////////三个按钮//////////////////////////
JButton jbtStart = new JButton("Start");
JButton jbtStop = new JButton("Stop");
JButton jbtRollback = new JButton("Rollback");//////////////////水平滑动块//////////////////////////
JSlider jslider = new JSlider();
public void stateChanged(ChangeEvent e)
{if(e.getSource() == jslider)
{
//double value = jslider.getValue();
//j = (int)value;}
}public FanControl()
{JPanel p1 = new JPanel(); //面板P1放置按钮
p1.add(jbtStart);
jbtStart.addActionListener(this);
p1.add(jbtStop);
jbtStop.addActionListener(this);
p1.add(jbtRollback);
jbtRollback.addActionListener(this);JPanel p2 = new JPanel(); //面板p2放置滚动条
p2.add(jslider);
jslider.addChangeListener(this);
setLayout(new BorderLayout()); //设置整个面板布局
this.add(p1,BorderLayout.SOUTH);
this.add(p2,BorderLayout.NORTH);
}public void actionPerformed(ActionEvent e)
{
if(e.getSource() == jbtStart)
{
t2.stop();
t1.start();
}
else if(e.getSource() == jbtStop)
{
t1.stop();
t2.stop();
}
else if(e.getSource() == jbtRollback)
{
t1.stop();
t2.start();
}
else if(e.getSource() == t1)
{
i++;}
else if(e.getSource() == t2)
{
i--;
}
repaint();
}
}public class TestFanControl
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
FanControl f = new FanControl();
frame.getContentPane().add(f);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
}
}
求高手解答?import javax.swing.*;
import java.awt.*;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.event.*;/*FanControl 类 按钮 风扇 滑动条 */ class FanControl extends JPanel implements ActionListener,ChangeListener
{
int i = 0;
int j = 50;
int m = 30; Timer t1 = new Timer(j,this);
Timer t2 = new Timer(j,this);
protected void paintComponent(Graphics g)
{
super.paintComponent(g);int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
int radius = (int)(Math.min(getWidth(),getHeight())*0.3);
int x = xCenter - radius;
int y = yCenter - radius;
g.fillArc(x,y,2*radius,2*radius,i,m);
g.setColor(Color.red);
g.fillArc(x,y,2*radius,2*radius,i + 90,m);
g.setColor(Color.yellow);
g.fillArc(x,y,2*radius,2*radius,i + 180,m);
g.setColor(Color.blue);
g.fillArc(x,y,2*radius,2*radius,i + 270,m);
g.setColor(Color.gray);
}/////////////////////三个按钮//////////////////////////
JButton jbtStart = new JButton("Start");
JButton jbtStop = new JButton("Stop");
JButton jbtRollback = new JButton("Rollback");//////////////////水平滑动块//////////////////////////
JSlider jslider = new JSlider();
public void stateChanged(ChangeEvent e)
{if(e.getSource() == jslider)
{
//double value = jslider.getValue();
//j = (int)value;}
}public FanControl()
{JPanel p1 = new JPanel(); //面板P1放置按钮
p1.add(jbtStart);
jbtStart.addActionListener(this);
p1.add(jbtStop);
jbtStop.addActionListener(this);
p1.add(jbtRollback);
jbtRollback.addActionListener(this);JPanel p2 = new JPanel(); //面板p2放置滚动条
p2.add(jslider);
jslider.addChangeListener(this);
setLayout(new BorderLayout()); //设置整个面板布局
this.add(p1,BorderLayout.SOUTH);
this.add(p2,BorderLayout.NORTH);
}public void actionPerformed(ActionEvent e)
{
if(e.getSource() == jbtStart)
{
t2.stop();
t1.start();
}
else if(e.getSource() == jbtStop)
{
t1.stop();
t2.stop();
}
else if(e.getSource() == jbtRollback)
{
t1.stop();
t2.start();
}
else if(e.getSource() == t1)
{
i++;}
else if(e.getSource() == t2)
{
i--;
}
repaint();
}
}public class TestFanControl
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
FanControl f = new FanControl();
frame.getContentPane().add(f);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setVisible(true);
}
}
import java.awt.*;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.event.*;/*FanControl 类 按钮 风扇 滑动条 */class FanControl extends JPanel implements ActionListener,ChangeListener
{
int i = 0;
int j = 50;
int m = 30;
int speed=1; Timer t1 = new Timer(j,this);
Timer t2 = new Timer(j,this); @Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g); double value = jslider.getValue();
speed = (int)(value/10)+1;
int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
int radius = (int)(Math.min(getWidth(),getHeight())*0.3);
int x = xCenter - radius;
int y = yCenter - radius;
g.fillArc(x,y,2*radius,2*radius,i,m);
g.setColor(Color.red);
g.fillArc(x,y,2*radius,2*radius,i + 90,m);
g.setColor(Color.yellow);
g.fillArc(x,y,2*radius,2*radius,i + 180,m);
g.setColor(Color.blue);
g.fillArc(x,y,2*radius,2*radius,i + 270,m);
g.setColor(Color.gray);
} /////////////////////三个按钮//////////////////////////
JButton jbtStart = new JButton("Start");
JButton jbtStop = new JButton("Stop");
JButton jbtRollback = new JButton("Rollback"); //////////////////水平滑动块//////////////////////////
JSlider jslider = new JSlider();
public void stateChanged(ChangeEvent e)
{ if(e.getSource() == jslider)
{
double value = jslider.getValue();
speed = (int)(value/10)+1; System.out.println("滑块拖动");
}
} public FanControl()
{ JPanel p1 = new JPanel(); //面板P1放置按钮
p1.add(jbtStart);
jbtStart.addActionListener(this);
p1.add(jbtStop);
jbtStop.addActionListener(this);
p1.add(jbtRollback);
jbtRollback.addActionListener(this); JPanel p2 = new JPanel(); //面板p2放置滚动条
p2.add(jslider);
jslider.addChangeListener(this);
setLayout(new BorderLayout()); //设置整个面板布局
this.add(p1,BorderLayout.SOUTH);
this.add(p2,BorderLayout.NORTH);
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == jbtStart){
t2.stop();
t1.start();
}
else if(e.getSource() == jbtStop){
t1.stop();
t2.stop();
}
else if(e.getSource() == jbtRollback){
t1.stop();
t2.start();
}
else if(e.getSource() == t1){
i+=speed; }
else if(e.getSource() == t2){
i-=speed;
}
repaint();
}
}
你改的参数就不应该是那个Timer的时间间隔,单独改那个参数风扇的角速度没有改变,你自己没发现么?