如果我想用JButton混合两种不同的颜色怎么办?

时间:2016-12-22 22:13:28

标签: java jbutton

我昨天刚刚开始在java中学习GUI。 我想对我的英语说抱歉,因为我不是母语为英语的人,但我希望每个人都能理解我的问题。 我做了3~4个关于JFrame,JButton,JRadioButton,JComponent,JToggleButton的例子,这些例子都写在我的书中。

和!现在我正在做我自己的例子。首先,我想创建一个屏幕,显示我想要使用JButton和JLabel的颜色。

import javax.swing.*;
import java.awt.event.*; 
import java.awt.*;

public class JButton_Color extends JFrame implements ActionListener{
private JLabel screen = new JLabel("");
private JButton col1 = new JButton("Blue");
private JButton col2 = new JButton("Green");
private JButton col3 = new JButton("Pink");

public JButton_Color(){
setLayout(new GridLayout(2,2));
add(screen); add(col1); add(col2); add(col3);
getContentPane().setBackground(Color.white);
screen.setOpaque(true);
col1.addActionListener(this);
col2.addActionListener(this);
col3.addActionListener(this);
setSize(100,200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);

}
public void actionPerformed(ActionEvent e){
Object action = e.getSource();

if(action == col1)
    screen.setBackground(Color.blue);

else if ( action == col2)
    screen.setBackground(Color.green);
else if ( action == col3)
    screen.setBackground(Color.pink);

 }  
 public static void main (String[] args){
 JButton_Color j_c = new JButton_Color();
 }
 }

它完美无缺,但这不是我的最终目标。我想混合我点击的两种颜色。所以,仅仅为了测试,我改变了方法actionPerformed就像那样:

public void actionPerformed(ActionEvent e){
Object action = e.getSource();
for (int i =0; i<2; i++){
if(action == col1)
    screen.setBackground(Color.blue);

else if ( action == col2)
    screen.setBackground(Color.green);
else if ( action == col3)
    screen.setBackground(Color.pink);
else if((action==col1)&&(action==col2))
    screen.setBackground(Color.yellow);

}
}

但这并不顺利。我该如何更改代码?实际上,我从未学过关于动作玩家和事件......但我想实现我的目标!

1 个答案:

答案 0 :(得分:0)

按下按钮时,将调用ActionListener.actionPerformed()方法,e.getSource()指向按下的按钮。您的侦听器按预期调用,但我不确定您要对for循环执行什么操作。 如果要混合单击的最后两种颜色,则需要在变量中保留以前的颜色,并且在输入执行的操作时,可以通过创建新的Color对象来创建新颜色,如下所示:{{3} }。然后将其设置为颜色,并记住将之前的颜色更新为刚刚单击的颜色!