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