Создание цветовой схемы GUI с Java - PullRequest
0 голосов
/ 19 ноября 2018

Меня зовут Авель, и я новичок в Java.Я пытаюсь создать программу, которая позволит мне вводить значения int в Jtextfields и использовать их для изменения цвета нижнего ряда моей панели.Я попытался превратить значения в поле jtext в целые.IDE говорит, что у меня нет очевидных ошибок, но я все еще не могу заставить строку изменить цвета.Я хочу понять это, прежде чем я закончу программу.Вот мой код:

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

public class App1 extends JFrame implements ActionListener {

    JPanel  jp, jp1, jp2, jp3, jp4, jp5;
    JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6;
    JButton jbrplus, jbrneg, jbgplus, jbgneg, jbbplus, jbbneg;
    int value, value1, value2;
    String text, text1, text2;

    public static void main(String[] args) {

        App1 KF = new App1();

    }

    App1() {
        this.setTitle("Application 1");
        this.setSize(800, 600);

        jp = new JPanel();
        this.add(jp);
        jp.setLayout(new GridLayout(2,1));

        jp1 = new JPanel();
        jp.add(jp1);
        jp1.setLayout(new GridLayout(1, 3));

        jp2 = new JPanel();
        jp1.add(jp2);
        jtf1 = new JTextField("RED");
        jtf1.setEditable(false);
        jp2.add(jtf1);
        jbrplus = new JButton("+");
        jp2.add(jbrplus);
        jtf2 = new JTextField("    0    ");
        jtf2.setEditable(true);
        jp2.add(jtf2);
        jbrneg = new JButton("-");
        jp2.add(jbrneg);
        jp2.setBackground(Color.RED);

        jp3 = new JPanel();
        jp1.add(jp3);
        jtf3 = new JTextField("Green");
        jtf3.setEditable(false);
        jp3.add(jtf3);
        jbgplus = new JButton("+");
        jp3.add(jbgplus);
        jtf4 = new JTextField("    0    ");
        jtf4.setEditable(true);
        jp3.add(jtf4);
        jbgneg = new JButton("-");
        jp3.add(jbgneg);
        jp3.setBackground(Color.GREEN);

        jp4 = new JPanel();
        jp1.add(jp4);
        jtf5 = new JTextField("Blue");
        jtf5.setEditable(false);
        jp4.add(jtf5);
        jbbplus = new JButton("+");
        jp4.add(jbbplus);
        jtf6 = new JTextField("    0    ");
        jtf6.setEditable(true);
        jp4.add(jtf6);
        jbbneg = new JButton("-");
        jp4.add(jbbneg);
        jp4.setBackground(Color.BLUE);

        jp5 = new JPanel();
        jp.add(jp5);
        jp5.setBackground(new Color(value, value1 , value2));
        this.setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {
            if (e.getSource() == jtf2 && e.getSource() == jtf4 && e.getSource() == jtf6) {
                    text = jtf2.getText();
                    text1 = jtf4.getText();
                    text2 = jtf6.getText();
                    value = Integer.parseInt(text);
                    value1 = Integer.parseInt(text1);
                    value2 = Integer.parseInt(text2);
                    jp5.setBackground(new Color(value, value1, value2));
            }
        }
    }

Может кто-нибудь показать мне, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Несколько вещей, которые вам здесь не хватает: 1) Слушатель действий должен быть привязан с помощью кнопки «+» или «-» (это отображение отсутствует).

2) Условие, если (e.getSource() == jtf2 && e.getSource() == jtf4 && e.getSource() == jtf6) нуждается в модификации, здесь заменить && на ||

Этот код должен работать для вас.

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

public class App1 extends JFrame implements ActionListener {

    JPanel jp, jp1, jp2, jp3, jp4, jp5;
    JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6;
    JButton jbrplus, jbrneg, jbgplus, jbgneg, jbbplus, jbbneg;
    int value, value1, value2;
    String text, text1, text2;

    public static void main(String[] args) {

        App1 KF = new App1();

    }

    App1() {
        this.setTitle("Application 1");
        this.setSize(800, 600);

        jp = new JPanel();
        this.add(jp);
        jp.setLayout(new GridLayout(2, 1));

        jp1 = new JPanel();
        jp.add(jp1);
        jp1.setLayout(new GridLayout(1, 3));

        jp2 = new JPanel();
        jp1.add(jp2);
        jtf1 = new JTextField("RED");
        jtf1.setEditable(false);
        jp2.add(jtf1);
        jbrplus = new JButton("+");
        jbrplus.addActionListener(this); // Add actionListener Step#1
        jp2.add(jbrplus);
        jtf2 = new JTextField("0");
        jtf2.setEditable(true);

        jp2.add(jtf2);
        jbrneg = new JButton("-");
        jbrneg.addActionListener(this);
        jp2.add(jbrneg);
        jp2.setBackground(Color.RED);

        jp3 = new JPanel();
        jp1.add(jp3);
        jtf3 = new JTextField("Green");
        jtf3.setEditable(false);
        jp3.add(jtf3);
        jbgplus = new JButton("+");
        jbgplus.addActionListener(this);
        jp3.add(jbgplus);
        jtf4 = new JTextField("0");
        jtf4.setEditable(true);
        jp3.add(jtf4);
        jbgneg = new JButton("-");
        jbgneg.addActionListener(this);
        jp3.add(jbgneg);
        jp3.setBackground(Color.GREEN);

        jp4 = new JPanel();
        jp1.add(jp4);
        jtf5 = new JTextField("Blue");
        jtf5.setEditable(false);
        jp4.add(jtf5);
        jbbplus = new JButton("+");
        jbbplus.addActionListener(this);
        jp4.add(jbbplus);
        jtf6 = new JTextField("0");
        jtf6.setEditable(true);
        jp4.add(jtf6);
        jbbneg = new JButton("-");
        jbbneg.addActionListener(this);
        jp4.add(jbbneg);
        jp4.setBackground(Color.BLUE);

        jp5 = new JPanel();
        jp.add(jp5);
        jp5.setBackground(new Color(value, value1, value2));
        this.setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jbrplus || e.getSource() == jbrneg || e.getSource() == jbgplus || 
                e.getSource() == jbgneg || e.getSource() == jbbplus || e.getSource() == jbbneg) {// Condition modification Step#2           
            text = jtf2.getText();
            text1 = jtf4.getText();
            text2 = jtf6.getText();
            value = Integer.parseInt(text);
            value1 = Integer.parseInt(text1);
            value2 = Integer.parseInt(text2);
            jp5.setBackground(new Color(value, value1, value2));
        }
    }
}
0 голосов
/ 19 ноября 2018

В actionPerformed() вы проверяете e.getSource() против jtf2, jtf4 и jtf6 и выполняете операцию , только если источник равен всем значениям одновременно .

Возможно, вы захотите «если источником является первое текстовое поле ИЛИ , источником является второе ИЛИ , источником является третье.


Пока App1 реализует ActionListener, вы не звоните xxx.addActionListener(app1).Вам нужно будет подключить jtf2, jtf4 и jtf6 для отправки событий действия в экземпляр приложения.Когда вы это сделаете, поскольку они являются единственными вещами, которые подключены к этому ActionListener, вам не нужно проверять, какое событие сгенерировало, потому что вы будете реагировать на любой источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...