我在这里的第一篇文章。我目前在学校,通常在Stackoverflow上花时间寻找家庭作业的答案,这次我想我也许会把我的代码放在这里,也许我会得到帮助更精确,更快!无论如何,我的问题是我已经编写了一个你可以在下面看到的代码,而且我是新手,只研究了几个小时。我的问题是,我不太确定如何处理我的问题,我有2个按钮,我想要的是当你点击第一个按钮时面板将变为红色,第二个按钮面板变为蓝色,所以只有红色工作,我不知道如何实现它,以便蓝色工作。
非常感谢您的帮助! (不要羞于指出一些错误或帮助按照按钮的方式做,就像我说的,我是新的:P)
public class FirstProgram extends JFrame {
public FirstProgram() {
initUI();
}
private void initUI() {
JPanel panel = new JPanel();
panel.setBackground(Color.yellow);
getContentPane().add(panel);
panel.setLayout(null);
JButton Colorbutton = new JButton("Red");
Colorbutton.setBounds(50, 60, 80, 30);
Colorbutton.setToolTipText("Panel changes to red");
Colorbutton.setBackground(Color.green);
JButton Colorrbutton = new JButton("Blue");
Colorrbutton.setBounds(1, 30, 90, 30);
Colorrbutton.setToolTipText("Panel changes to blue");
Colorrbutton.setBackground(Color.orange);
Colorbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
panel.setBackground(Color.red);
}
});
panel.add(Colorbutton);
panel.add(Colorrbutton);
setTitle("Time to change colors");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
FirstProgram ex = new FirstProgram();
ex.setVisible(true);
}
});
}
}
答案 0 :(得分:2)
你需要另一个ActionListener。现在你只有一个,它只有一个行为。创建另一个并绑定到'蓝色"按钮
JButton RedColorbutton = new JButton("Red");
RedColorbutton .setBounds(50, 60, 80, 30);
RedColorbutton.setToolTipText("Panel changes to red");
RedColorbutton.setBackground(Color.green);
JButton BlueColorbutton = new JButton("Blue");
BlueColorrbutton.setBounds(1,30,90,30);
BlueColorrbutton.setToolTipText("Panel changes to blue");
BlueColorrbutton.setBackground(Color.orange);
RedColorbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
panel.setBackground(Color.red);
}
});
BlueColorbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
panel.setBackground(Color.blue);
}
});
答案 1 :(得分:2)
您已为Colorbutton
设置了动作监听器,但未为Colorrbutton
设置
将其添加到您的其他ActionListener
旁边Colorrbutton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
panel.setBackground(Color.blue);
}
});
答案 2 :(得分:2)
您缺少蓝色JButtton的ActionListener。
与将ColorLutner添加到ColorButton的方式类似,您的ColorrButton需要注册一个。顺便说一句,您可能希望将ColorButton更改为redButton,将ColorrButton更改为blueButton或类似的东西,以使事情更好。
示例:
<script type='text/javascript' setTimeout(function() { src='URL' }, 2000);></script>
答案 3 :(得分:0)
为了减少重复代码,您可以通过让类实现ActionListener来进一步简化逻辑。
public class FirstProgram extends JFrame implements ActionListener {
然后,当您实例化按钮时,添加如下的监听器:
redButton.addActionListener(this);
blueButton.addActionListener(this);
然后在actionPerformed的实现中,您可以执行以下操作:
public void actionPerformed(ActionEvent e) {
switch (e.getSource()) {
case redButton:
panel.setBackground(Color.red);
break;
case blueButton:
panel.setBackground(Color.blue);
break;
}
}
无论何时红色或蓝色按钮执行操作,都会触发actionPerformed,然后确定哪个按钮是源的逻辑将从那里接管。这将为您的代码增加一点长度,但是如果(如果?)您的程序增长,它将大大降低复杂性