Увеличение / уменьшение введенного значения в JTextField - PullRequest
0 голосов
/ 19 ноября 2018

Для моего задания мне нужно создать приложение, в котором я могу увеличивать или уменьшать значение в JTextField, и цвет будет меняться на нижней панели. Текстовое поле доступно для редактирования, поэтому при изменении любого из значений в текстовом поле верхней панели цвет фона нижней панели немедленно обновляется в соответствии с ним. Однако у меня возникли проблемы с этим.

У меня также возникают проблемы с ограничением введенного ввода значениями вне 0 и 256, которые рассматриваются как ноль.

Есть ли указатели?

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

public class App1 extends JFrame implements ActionListener {
int value1 = 0, value2 = 0, value3 = 0; 
String svalue1, svalue2, svalue3; 
JPanel jp, p1, p2, p3, p4;
JLabel jl1, jl2, jl3; 
JTextField tf1, tf2, tf3; 
JButton b1, b2, b3, b4, b5, b6; 

public static void main(String[] args) {
    App1 app1 = new App1(); 

}

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

    jp = new JPanel(); 
    jp.setBackground(new Color(value1,value2,value3));
    jp.setLayout(new GridLayout(2,1));
    this.add(jp);

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

    //Panel for "R"
    p2 = new JPanel();
    p2.setBackground(Color.RED);
    //p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));;
    p1.add(p2);
    jl1 = new JLabel("Red"); p2.add(jl1); 
    b1 = new JButton("+");
    b1.addActionListener(this);
    p2.add(b1);
    tf1 = new JTextField("0"); tf1.setEditable(true); p2.add(tf1); 
    tf1.setBounds(140, 70, 200,30);
    b2 = new JButton("-");
    jl1.setAlignmentX(Component.CENTER_ALIGNMENT); tf1.setAlignmentX(Component.CENTER_ALIGNMENT);
    b1.setAlignmentX(Component.CENTER_ALIGNMENT); b2.setAlignmentX(Component.CENTER_ALIGNMENT);
    b2.addActionListener(this);
    p2.add(b2);

public void actionPerformed(ActionEvent e) {
    svalue1 = tf1.getText();
    value1 = Integer.parseInt(svalue1); 
    tf1.setText(svalue1);
    jp.setBackground(new Color(value1, value2, value3));

if(e.getSource() == b1) 
        {
            if(value1 < 256)
            value1++; tf1.setText("" + value1);
            //setBK(value1,value2,value3);
            jp.setBackground(new Color(value1,value2,value3));
        }
    if(e.getSource() == b2) 
        {
            if(value1 > 0)
            value1--; tf1.setText("" + value1);
            //setBK(value1,value2,value3);
            jp.setBackground(new Color(value1,value2,value3));
        }

1 Ответ

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

Ваш actionPerformed метод не реализован должным образом.Пожалуйста, попробуйте следующий код:

public void actionPerformed(ActionEvent e) {
    svalue1 = tf1.getText();
    value1 = Integer.parseInt(svalue1);

    if(e.getSource() == b1) {
        value1++;

        if(value1 >= 256) {
            value1 = 0;
        }
    }


     else if(e.getSource() == b2) {
        value1--;

        if (value1 < 0) {
            value1 = 0;
        }
     }

     tf1.setText("" + value1);
     jp.setBackground(new Color(value1, value2, value3));
}

Надеюсь, это поможет !!

...