不在特定范围内时更改JTextField&使用JTextFields中的文本更改JPanel背景

时间:2018-04-08 08:12:37

标签: java jpanel jtextfield rgb

我环顾四周,找到了迄今为​​止帮助我的各种信息,但我目前仍遇到以下问题:

  1. 如果他们的JTextField超出(0-255)的范围,则不会更改为0.

  2. 在点击其中一个按钮之前,JPanel不会根据JTextFields中输入的内容更改颜色。

  3. 这是我目前的代码:

    List.init

    }

    非常感谢任何帮助!

    如果需要更多背景/说明,我已附上我的作业answer。以及程序应该guidelines(我的程序看起来像这样,我更担心功能而不是看起来完全相同的程序)。

    这是我第一次发帖,所以我希望我做的一切都正确!谢谢你的时间!

2 个答案:

答案 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来更改背景。