我是JButton和JFrame的新手,只是想学习一些基础知识,关于逻辑应该如何工作以及代码应该是什么样子。在这里,我已经创建了一个逻辑概念,但它并没有起作用。我不确定我是否只需要调整一些东西,或者我是否真的错了。再一次,我是新手,只是想学习基础知识。感谢您的任何帮助。它应该做的是在单击按钮时更改线条的颜色。 :)
JButton yellow = new JButton();
public SimplePaint(){
JPanel panel=new JPanel();
yellow.setBackground(Color.yellow);
panel.add(yellow);
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
Line2D line = new Line2D.Float(0, 250, 2000, 300);
g2.setColor(Color.MAGENTA);
g2.draw(line);
JButton color = null;
if (color == yellow) {
g2.setColor(Color.YELLOW);
}
更新:我已经实现了以下答案,我认为我越来越近了,但功能仍然无效。这是更新的代码:
JButton action =new JButton();
JButton red = new JButton();
JButton blue = new JButton();
public SimplePaint() {
blue.setBackground(Color.BLUE);
panel.add(blue);
red.setBackground(Color.RED);
panel.add(red);
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
Line2D line = new Line2D.Float(0, 250, 2000, 300);
g2.setColor(Color.MAGENTA);
g2.setStroke(new BasicStroke(3));
g2.draw(line);
action.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == blue) {
g2.setColor(Color.BLUE);
}
else if(e.getSource() == red) {
g2.setColor(Color.RED);
}
repaint();
}
});
}
答案 0 :(得分:1)
您需要为按钮添加一个侦听器,以便它们可以触发操作
jBUtton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button Pressed");
//pressed = !pressed; // if you want to toggle
pressed = true;
this.repaint(); // you need to refresh the screen
}
} );
之后
if(pressed)
g2.setColor(Color.YELLOW);
else
g2.setColor(Color.MAGENTA);
答案 1 :(得分:0)
您展示的代码太不完整,我们无法真正看出错误。 你定义了一个SimplePaint构造函数(但是没有显示SimplePaint的声明方式 - 它是否像JFrame的JPanel那样扩展了一些类?)。然后你在该构造函数中非法定义了一个paint()方法。
首先,扩展JFrame很少是一个好主意。你的类应该扩展JPanel,你应该覆盖paintComponent(),而不是paint()。然后,您只需创建一个JFrame并将SimplePaint实例添加到它。