Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JButton与功能关联,更改线条的颜色_Java_Jbutton - Fatal编程技术网

Java 将JButton与功能关联,更改线条的颜色

Java 将JButton与功能关联,更改线条的颜色,java,jbutton,Java,Jbutton,我不熟悉JButton和JFrame,只是想学习一些基础知识,关于逻辑应该如何工作以及代码应该是什么样子。在这里,我创造了一个逻辑概念,但它不起作用。我不确定我是否需要调整一些东西,或者我是否完全错了。再说一次,我是新手,只是想学一些基本的东西。谢谢你的帮助。它应该做的是在单击按钮时更改行的颜色。:) 更新:我已经实现了下面的答案,我想我离这个答案越来越近了,但是这个功能仍然不起作用。以下是更新的代码: JButton action =new JButton(); JButton red = n

我不熟悉JButton和JFrame,只是想学习一些基础知识,关于逻辑应该如何工作以及代码应该是什么样子。在这里,我创造了一个逻辑概念,但它不起作用。我不确定我是否需要调整一些东西,或者我是否完全错了。再说一次,我是新手,只是想学一些基本的东西。谢谢你的帮助。它应该做的是在单击按钮时更改行的颜色。:)

更新:我已经实现了下面的答案,我想我离这个答案越来越近了,但是这个功能仍然不起作用。以下是更新的代码:

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();
        }
    });

}

您需要向按钮添加一个侦听器,以便它们可以触发操作

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);

您显示的代码太不完整,我们无法真正看到错误所在。 您定义了一个SimplePaint构造函数(但没有显示SimplePaint是如何声明的——它是否扩展了JFrame的JPanel之类的类?)。然后在该构造函数中非法定义一个paint()方法


首先,扩展JFrame很少是一个好主意。您的类应该扩展JPanel,您应该重写paintComponent(),而不是paint()。然后,您只需创建一个JFrame并将SimplePaint实例添加到其中。

单击按钮时要更改为行颜色的代码在哪里?我想应该是JButton color=null;然后,如果(color==黄色),则将线条颜色更改为黄色。这个逻辑不正确吗?不,因为颜色从来没有初始化过(因此等于null),如果它被初始化,并且没有直接设置为黄色,它们就不可能彼此相等,因为它们是JButtonOkay的独立实例,那么我如何修复这个逻辑呢?那会是什么样子?
if(pressed)
    g2.setColor(Color.YELLOW);
else
    g2.setColor(Color.MAGENTA);