Я пытаюсь создать простую модель RGM, которая изменяет цвет текста на цвет, заданный пользователем, используя три текстовых поля (красный, зеленый, синий). После ввода чисел в три поля нажмите кнопку «Создать», цвет текста изменится на цвет, заданный целыми числами (R, G, B). Если при нажатии кнопки содержимое любых текстовых полей не является целым числом, то недопустимое поле (поля) должно быть очищено и должно появиться соответствующее сообщение. Текстовые поля, содержащие целые числа, никогда не должны быть очищены.Очистка текстовых полей, если контент не является целым [JApplet]
Я изо всех сил пытаюсь выполнить часть, где вводится что-либо, что не является целым числом. Я попытался попытаться поймать методы каждого цвета целого числа (R, G, B), так как:
try{
R = Integer.parseInt(Tred.getText());
}catch (Exception ex){
out.setText("Invalid Input in Red.");
R = 0;
Tred.setText("");
}
Хотя это ничего не делает для меня. Вот мой полный actionPerformed, который обрабатывает то, что происходит, когда нажимаются кнопки:
@Override
public void actionPerformed(ActionEvent e) {
try{
try{
R = Integer.parseInt(Tred.getText());
}catch (Exception ex){
out.setText("Invalid Input in Red.");
R = 0;
Tred.setText("");
}
try{
G = Integer.parseInt(Tgreen.getText());
}catch (Exception ex){
out.setText("Invalid Input in Green.");
G = 0;
Tgreen.setText("");
}
try{
B = Integer.parseInt(Tblue.getText());
}catch (Exception ex){
out.setText("Invalid Input in Blue.");
B = 0;
Tblue.setText("");
}
inputColor = new Color(R,G,B);
switch (theOp){
case 'C':
out.setText("My Name");
out.setForeground(inputColor);
break;
case 'R':
out.setText("Welcome");
out.setForeground(Color.green);
Tred.setText("");
Tgreen.setText("");
Tblue.setText("");
break;
}
}catch(Exception e1){
out.setText("Invalid Input captured");
out.setForeground(Color.black);
}
}
}
я, возможно, нужно будет использовать, если заявление для каждого цвета целого числа?
[UPDATE] В соответствии с просьбой, вот исполняемый пример моего кода:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Ex1 extends JApplet {
//Here i create the 3 primary colour integers
int R = 0,G = 0,B = 0;
//inputColor will be the color the user created
Color inputColor = new Color(R,G,B);
TextField Tred,Tgreen,Tblue;
JButton buttCreate,buttReset;
JLabel sR,sG,sB,out;
JPanel topPanel,centrePanel;
public void init()
{
this.setSize(700, 100);
topPanel = new JPanel();
centrePanel = new JPanel();
buttCreate = new JButton("Create!");
buttCreate.addActionListener(new ButtonHandler(this,'C'));
buttReset = new JButton("Reset");
buttReset.addActionListener(new ButtonHandler(this,'R'));
Tred = new TextField("",3);
Tgreen = new TextField("",3);
Tblue = new TextField("",3);
sR = new JLabel("R:");
sG = new JLabel("G:");
sB = new JLabel("B:");
out = new JLabel
("Welcome to CE203 Assignment 1,submitted by: Lewis Horsley 1405160");
out.setForeground(Color.green);
topPanel.add(sR);
topPanel.add(Tred);
topPanel.add(sG);
topPanel.add(Tgreen);
topPanel.add(sB);
topPanel.add(Tblue);
topPanel.add(buttCreate);
topPanel.add(buttReset);
centrePanel.add(out);
this.add(centrePanel, BorderLayout.CENTER);
this.add(topPanel, BorderLayout.NORTH);
}
class ButtonHandler implements ActionListener {
Ex1 theApplet;
char theOp;
ButtonHandler(Ex1 app, char op){
this.theApplet = app;
this.theOp = op;
}
@Override
public void actionPerformed(ActionEvent e) {
try{
try{
R = Integer.parseInt(Tred.getText());
}catch (Exception ex){
out.setText("Invalid Input in Red.");
R = 0;
Tred.setText("");
}
try{
G = Integer.parseInt(Tgreen.getText());
}catch (Exception ex){
out.setText("Invalid Input in Green.");
G = 0;
Tgreen.setText("");
}
try{
B = Integer.parseInt(Tblue.getText());
}catch (Exception ex){
out.setText("Invalid Input in Blue.");
B = 0;
Tblue.setText("");
}
inputColor = new Color(R,G,B);
switch (theOp){
case 'C':
out.setText("My Name");
out.setForeground(inputColor);
break;
case 'R':
out.setText("Welcome");
out.setForeground(Color.green);
Tred.setText("");
Tgreen.setText("");
Tblue.setText("");
break;
}
}catch(Exception e1){
out.setText("Invalid Input captured");
out.setForeground(Color.black);
}
}
}
}
* «Хотя это ничего не делает для меня» * - Также вы не используете фрагмент кода для нас. Рассмотрите возможность предоставления [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам. – MadProgrammer
Причина, по которой я воздержался от публикации, почему исполняемый код до того, как мне сказали попробовать и показывать только соответствующие фрагменты. Я обновлю. – Volken
Посмотрите на ссылку, которая приведена в моем примере, которая должна предоставить вам некоторое представление о том, что мы пытаемся найти. – MadProgrammer