gpt4 book ai didi

java - 从 JTextField 读取文本时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 10:25:33 25 4
gpt4 key购买 nike

我正在做一个简单的 Javax.swing 程序,但有一些我真的不明白的错误。完整代码如下:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class JFrameColore extends JFrame
{
public JFrameColore()
{
this.setSize(600, 300);

label_R = new JLabel();
label_R.setText("R");

label_G = new JLabel();
label_G.setText("G");

label_B = new JLabel();
label_B.setText("B");

text_R = new JTextField();
text_G = new JTextField();
text_B = new JTextField();

button_COLORA = new JButton();

Azusa azunyan = new Azusa();

button_COLORA.addActionListener(azunyan);

panel_COLORE = new JPanel();


label_COLORA = new JLabel();

}

public final JLabel label_R, label_G, label_B;

public final JTextField text_R, text_G, text_B;

public final JButton button_COLORA;

public final JPanel panel_COLORE;

public final JLabel label_COLORA;

private class Azusa implements ActionListener
{

@Override
public void actionPerformed(ActionEvent e)
{
boolean colorable = true;
if (!isNumber(text_R.getText()))
{
colorable = false;
text_R.setText("ERR");
}
else if (Integer.getInteger(text_R.getText()) < 0
|| Integer.getInteger(text_R.getText()) > 255)
{
colorable = false;
text_R.setText("ERR");
}
if (!isNumber(text_G.getText()))
{
colorable = false;
text_G.setText("ERR");
}
else if (Integer.getInteger(text_G.getText()) < 0
|| Integer.getInteger(text_G.getText()) > 255)
{
colorable = false;
text_G.setText("ERR");
}
if (!isNumber(text_B.getText()))
{
colorable = false;
text_B.setText("ERR");
}
else if (Integer.getInteger(text_B.getText()) < 0
|| Integer.getInteger(text_B.getText()) > 255)
{
colorable = false;
text_B.setText("ERR");
}



if (colorable)
{
panel_COLORE.setOpaque(true);
panel_COLORE.setBackground(new Color(

Integer.getInteger(text_R.getText()),
Integer.getInteger(text_G.getText()),
Integer.getInteger(text_B.getText())
));
}

}

}

protected boolean isNumber(String gringo)
{
for (int i = 0; i < gringo.length(); i++)
{
if (!Character.isDigit(gringo.charAt(i)))
{
return false;
}
}
return true;
}

}

例如,当我这样做时 else if (Integer.getInteger(text_R.getText()) < 0
|| Integer.getInteger(text_R.getText()) > 255)

我得到一个 NullPointerException,我真的不知道为什么,因为我检查了这些值是整数。我究竟做错了什么?如果有在 Swing 方面更有经验的人来解释一下就好了。

最佳答案

您想要执行Integer.parseInt()而不是Integer.getInteger():

else if (Integer.parseInt(text_R.getText())

oracle docs

这里有一篇文章解释了 getInteger() 的作用 - link

关于java - 从 JTextField 读取文本时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35372861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com