题目: 用三个Jslider对象分别代表颜色中的红、绿、蓝,他们的值从0到255,在相应的三个JTextField中显示各个Jslider的当前值。用这三个值作为color类构造方法的参数构造一个新的Color对象,用来填充一个矩形。
我编的程序能运行出来结果,但不能画矩形。找了两天也找不出错误。函数程序如下:
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;public class ti13 extends JFrame {
static int red,blue,green;
static String x1,x2,x3;
//构造函数
public ti13(){
JFrame.setDefaultLookAndFeelDecorated(true); //设置JFrame的外观风格
JFrame frame = new JFrame("13题");
Container contentPane=frame.getContentPane(); //获得一个项级容器的内容面板,通过它加入其他组件
contentPane.setLayout(new GridLayout(7,1));
//建立三个Jslider
final JSlider redSlider=new JSlider(SwingConstants.HORIZONTAL, 0, 255, 1 );
final JSlider greenSlider=new JSlider(SwingConstants.HORIZONTAL, 0, 255, 1 );
final JSlider blueSlider=new JSlider(SwingConstants.HORIZONTAL, 0, 255, 1 );
//建立三个JTextField
final JTextField redText=new JTextField();
final JTextField greenText=new JTextField();
final JTextField blueText=new JTextField();
//添加监听器
redSlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
red=redSlider.getValue();
x1=String.valueOf(red);
redText.setText(x1); //在 JTextField 中显示JSlider的值
repaint();
}
});
greenSlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
green=greenSlider.getValue();
x2=String.valueOf(green);
greenText.setText(x2); //在 JTextField 中显示JSlider的值
repaint();
}
});
blueSlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
blue=blueSlider.getValue();
x3=String.valueOf(blue);
blueText.setText(x3); //在 JTextField 中显示JSlider的值
repaint();
}
});
//添加到面板中
contentPane.add(redSlider);
contentPane.add(redText);
contentPane.add(greenSlider);
contentPane.add(greenText);
contentPane.add(blueSlider);
contentPane.add(blueText); frame.setDefaultLookAndFeelDecorated(true);
frame.pack();
frame.show();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void Color (int red, int green, int blue){Color(red, green, blue);}
public void paint(Graphics g){
super.paint(g);
g.setColor(new Color(red, green, blue));
g.fillRect(0,350,100,200);
}
public static void main (String[] args) {
ti13 application = new ti13();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
我编的程序能运行出来结果,但不能画矩形。找了两天也找不出错误。函数程序如下:
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;public class ti13 extends JFrame {
static int red,blue,green;
static String x1,x2,x3;
//构造函数
public ti13(){
JFrame.setDefaultLookAndFeelDecorated(true); //设置JFrame的外观风格
JFrame frame = new JFrame("13题");
Container contentPane=frame.getContentPane(); //获得一个项级容器的内容面板,通过它加入其他组件
contentPane.setLayout(new GridLayout(7,1));
//建立三个Jslider
final JSlider redSlider=new JSlider(SwingConstants.HORIZONTAL, 0, 255, 1 );
final JSlider greenSlider=new JSlider(SwingConstants.HORIZONTAL, 0, 255, 1 );
final JSlider blueSlider=new JSlider(SwingConstants.HORIZONTAL, 0, 255, 1 );
//建立三个JTextField
final JTextField redText=new JTextField();
final JTextField greenText=new JTextField();
final JTextField blueText=new JTextField();
//添加监听器
redSlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
red=redSlider.getValue();
x1=String.valueOf(red);
redText.setText(x1); //在 JTextField 中显示JSlider的值
repaint();
}
});
greenSlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
green=greenSlider.getValue();
x2=String.valueOf(green);
greenText.setText(x2); //在 JTextField 中显示JSlider的值
repaint();
}
});
blueSlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e){
blue=blueSlider.getValue();
x3=String.valueOf(blue);
blueText.setText(x3); //在 JTextField 中显示JSlider的值
repaint();
}
});
//添加到面板中
contentPane.add(redSlider);
contentPane.add(redText);
contentPane.add(greenSlider);
contentPane.add(greenText);
contentPane.add(blueSlider);
contentPane.add(blueText); frame.setDefaultLookAndFeelDecorated(true);
frame.pack();
frame.show();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void Color (int red, int green, int blue){Color(red, green, blue);}
public void paint(Graphics g){
super.paint(g);
g.setColor(new Color(red, green, blue));
g.fillRect(0,350,100,200);
}
public static void main (String[] args) {
ti13 application = new ti13();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货