首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从JTextField读取文本时的NullPointerException

从JTextField读取文本时的NullPointerException
EN

Stack Overflow用户
提问于 2016-02-13 05:57:23
回答 1查看 44关注 0票数 0

我正在做一个简单的Javax.swing程序,但是有一些错误我真的不能理解。下面是完整的代码:

代码语言:javascript
复制
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经验的人来解释会更好。

EN

回答 1

Stack Overflow用户

发布于 2016-02-13 05:59:22

您希望使用Integer.parseInt()而不是Integer.getInteger()

代码语言:javascript
复制
else if (Integer.parseInt(text_R.getText())

oracle docs

这篇文章解释了getInteger()是做什么的-- link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35372861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档