我环顾四周,找到了迄今为止帮助我的各种信息,但我目前仍遇到以下问题:
如果他们的JTextField超出(0-255)的范围,则不会更改为0.
在点击其中一个按钮之前,JPanel不会根据JTextFields中输入的内容更改颜色。
这是我目前的代码:
List.init
}
非常感谢任何帮助!
如果需要更多背景/说明,我已附上我的作业answer。以及程序应该guidelines(我的程序看起来像这样,我更担心功能而不是看起来完全相同的程序)。
这是我第一次发帖,所以我希望我做的一切都正确!谢谢你的时间!
答案 0 :(得分:0)
为了更好地维护代码,我强烈建议您为每个按钮实现单独的动作侦听器。
编辑:
多个ActionListener示例
public class App1 extends JFrame
{
JButton red, blue;
public static void main(String[] args)
{
App1 app = new App1();
}
App1()
{
red = new JButton("Red");
red.addActionListener(new RedListener());
blue = new JButton("Blue");
blue.addActionListener(new BlueListener());
//Other code creating JPanel, adding components to it etc.
}
class RedListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//Your program logic here. Implement what you want to happen after user clicks red button
}
class BlueListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
//Your program logic here. Implement what you want to happen after user clicks blue button
}
}
在上面的代码中,RedListener和BlueListener类是外部App1类的内部类。
答案 1 :(得分:0)
我问同学他们是怎么做的,我想出来了。
首先,我的按钮,我的代码很糟糕(我在下面放了一段以突出我的观点)。我不知道如何解释它,但
if(e.getSource() == rP)
{
red++;
jtf_red.setText("" + red);
if (red < 255)
{
jtf_red.setText("" + 255);
}
}
else if(e.getSource() == rM)
{
red--;
jtf_red.setText("" + red);
if (red < 0)
{
jtf_red.setText("" + 0);
}
红色以红色++增加;但是然后不检查它是否超过255。
正确的方法是移动红色++;到
里面的if语句if(e.getSource() == rP)
{
if (red < 255)
{
red++;
...
}
}
等等其他按钮的等等。
解决我的第一个问题
如果我们的JTextField超出(0-255)的范围,则不会更改为0.
我需要在编写if语句后将ActionListener添加到JTextFields,如果输入的值不在范围内,则将JTextFields设置为0。
解决我的第二个问题
JPanel不会根据JTextFields中键入的内容更改颜色,直到单击其中一个按钮为止。
将ActionListener添加到按钮和JTextFields后,我创建了一个if语句,用于检查源是按钮还是JTextFields来更改背景。