Не могу заставить JApplet работать.Каждый раз, когда я запускаю программу, я получаю сообщение об ошибке - PullRequest
0 голосов
/ 04 мая 2019

Каждый раз, когда я запускаю свой код, эта ошибка отображается в верхней части кода.

У меня была программа без смены цвета, которая работала нормально, но с тех пор, как я добавил возможность изменять цвет числа, я не могу заставить его работать на всю жизнь. Любая помощь приветствуется. Эта программа является проблемой для моего Java-класса.

java.lang.NullPointerException
    at ColorChange.init(ColorChange.java:29)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)" 

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


public class ColorChange extends JApplet implements ItemListener, 
ActionListener
{


private JRadioButton blackRb, blueRb, orangeRb, greenRb, yellowRb, redRb, 
pinkRb, grayRb;
private Color currentColor=Color.magenta;   
private ButtonGroup colorSelect;    
private JTextField numberTF;
private JLabel label;
private JButton okB;
private int num=0;

public void init() {

Container c=getContentPane();
c.setLayout(null);
setSize(500,300);

label=new JLabel("Enter number");
label.setLocation(200,40);
label.setSize(100,30);

numberTF=new JTextField(1);
numberTF.setLocation(300,40);

okB.setLocation(400,40);
okB.setSize(50,30);
okB.addActionListener(this);

c.add(label);
c.add(numberTF);
c.add(okB);

blackRb=new JRadioButton("Black");
blueRb=new JRadioButton("Blue");
orangeRb=new JRadioButton("Orange");
greenRb=new JRadioButton("Green");
yellowRb=new JRadioButton("Yellow");
redRb=new JRadioButton("Red");
pinkRb=new JRadioButton("Pink");
grayRb=new JRadioButton("Grey");

blackRb.setSize(100,30);
blueRb.setSize(100,30);
orangeRb.setSize(100,30);
greenRb.setSize(100,30);
yellowRb.setSize(100,30);
redRb.setSize(100,30);
pinkRb.setSize(100,30);
grayRb.setSize(100,30);

blackRb.setLocation(200,70);
blueRb.setLocation(200,100);
orangeRb.setLocation(200,130);
greenRb.setLocation(200,160);
yellowRb.setLocation(400,70);
redRb.setLocation(400,100);
pinkRb.setLocation(400,130);
grayRb.setLocation(400,160);

blackRb.addActionListener(this);
blueRb.addActionListener(this);
orangeRb.addActionListener(this);
greenRb.addActionListener(this);
yellowRb.addActionListener(this);
redRb.addActionListener(this);
pinkRb.addActionListener(this);
grayRb.addActionListener(this);

c.add(blackRb);
c.add(blueRb);
c.add(orangeRb);
c.add(greenRb);
c.add(yellowRb);
c.add(redRb);
c.add(pinkRb);
c.add(grayRb);

colorSelect=new ButtonGroup();

colorSelect.add(blackRb);
colorSelect.add(blueRb);
colorSelect.add(orangeRb);
colorSelect.add(greenRb);
colorSelect.add(yellowRb);
colorSelect.add(redRb);
colorSelect.add(pinkRb);
colorSelect.add(grayRb);

}


public void paint(Graphics g)
{
super.paint(g);
g.setColor(currentColor);
switch (num)
{

case 0:
    g.fillRect(50,25,125,25);
    g.fillRect(50,50,25,175);
    g.fillRect(50,200,125,25);
    g.fillRect(150,25,25,175);
    break;

case 1:
    g.fillRect(75,25,75,25);
    g.fillRect(100,50,50,125);
    g.fillRect(50,175,150,25);
    break;

case 2:
    g.fillRect(50,25,125,25);
    g.fillRect(150,50,25,50);
    g.fillRect(50,100,125,25);
    g.fillRect(50,175,125,25);
    g.fillRect(50,125,25,50);
    break;

case 3:
    g.fillRect(150,50,25,175);
    g.fillRect(50,50,100,25);
    g.fillRect(50,125,100,25);
    g.fillRect(50,200,100,25);
    break;

case 4:
    g.fillRect(50,25,25,75);
    g.fillRect(50,100,100,25);
    g.fillRect(150,25,25,175);
    break;

case 5:
    g.fillRect(50,25,125,25);
    g.fillRect(50,50,25,50);
    g.fillRect(50,100,125,25);
    g.fillRect(50,175,125,25);
    g.fillRect(150,125,25,50);
    break;

case 6:
    g.fillRect(50,25,125,25);
    g.fillRect(50,50,25,50);
    g.fillRect(50,100,125,25);
    g.fillRect(50,175,125,25);
    g.fillRect(150,125,25,50);
    g.fillRect(50,125,25,50);
    break;

case 7:
    g.fillRect(50,25,125,25);
    g.fillRect(150,50,25,150);
    break;

case 8:
    g.fillRect(50,25,125,25);
    g.fillRect(50,50,25,50);
    g.fillRect(50,100,125,25);
    g.fillRect(50,175,125,25);
    g.fillRect(150,125,25,50);
    g.fillRect(50,125,25,50);
    g.fillRect(150,50,25,50);
    break;

case 9:
default:
    g.fillRect(50,25,125,25);
    g.fillRect(50,50,25,50);
    g.fillRect(50,100,125,25);
    g.fillRect(50,175,125,25);
    g.fillRect(150,125,25,50);
    g.fillRect(150,50,25,50);
    break;
 }
}

public void itemStateChanged(ItemEvent e) 
{
if(e.getSource()==blackRb)
    currentColor=Color.black;
else if(e.getSource()==blueRb)
    currentColor=Color.blue;
else if(e.getSource()==orangeRb)
    currentColor=Color.orange;
else if(e.getSource()==greenRb)
    currentColor=Color.green;
else if(e.getSource()==yellowRb)
    currentColor=Color.yellow;
else if(e.getSource()==redRb)
    currentColor=Color.red;
else if(e.getSource()==pinkRb)
    currentColor=Color.pink;
else if(e.getSource()==grayRb)
    currentColor=Color.gray;
repaint();
}

public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand().equals("Ok"))
            num=Integer.parseInt(numberTF.getText());
    repaint();

}

}

Ответы [ 2 ]

1 голос
/ 05 мая 2019

ваша переменная okB jbutton никогда не инициализируется.

0 голосов
/ 05 мая 2019

Вот ваш модифицированный рабочий код и узнайте, что вы пропустили.

//<applet width="500" height="300" code="ColorChange"></applet>

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


public class ColorChange extends JApplet implements ItemListener, ActionListener {

    private JRadioButton blackRb, blueRb, orangeRb, greenRb, yellowRb, redRb, pinkRb, grayRb;
    private Color currentColor=Color.magenta;   
    private ButtonGroup colorSelect;    
    private JTextField numberTF;
    private JLabel label;
    private JButton okB;
    private int num=0;

    public void init() {

        Container c=getContentPane();
        c.setLayout(null);
        setSize(500,300);

        label=new JLabel("Enter number");
        label.setLocation(200,40);
        label.setSize(100,30);

        numberTF=new JTextField(5);
        numberTF.setLocation(300,40);
        numberTF.setSize(50,30);

        okB = new JButton("Ok");
        okB.setLocation(400,40);
        okB.setSize(80,30);
        okB.addActionListener(this);

        c.add(label);
        c.add(numberTF);
        c.add(okB);

        blackRb=new JRadioButton("Black");
        blueRb=new JRadioButton("Blue");
        orangeRb=new JRadioButton("Orange");
        greenRb=new JRadioButton("Green");
        yellowRb=new JRadioButton("Yellow");
        redRb=new JRadioButton("Red");
        pinkRb=new JRadioButton("Pink");
        grayRb=new JRadioButton("Grey");

        blackRb.setSize(100,30);
        blueRb.setSize(100,30);
        orangeRb.setSize(100,30);
        greenRb.setSize(100,30);
        yellowRb.setSize(100,30);
        redRb.setSize(100,30);
        pinkRb.setSize(100,30);
        grayRb.setSize(100,30);

        blackRb.setLocation(200,70);
        blueRb.setLocation(200,100);
        orangeRb.setLocation(200,130);
        greenRb.setLocation(200,160);
        yellowRb.setLocation(400,70);
        redRb.setLocation(400,100);
        pinkRb.setLocation(400,130);
        grayRb.setLocation(400,160);

        blackRb.addItemListener(this);
        blueRb.addItemListener(this);
        orangeRb.addItemListener(this);
        greenRb.addItemListener(this);
        yellowRb.addItemListener(this);
        redRb.addItemListener(this);
        pinkRb.addItemListener(this);
        grayRb.addItemListener(this);

        c.add(blackRb);
        c.add(blueRb);
        c.add(orangeRb);
        c.add(greenRb);
        c.add(yellowRb);
        c.add(redRb);
        c.add(pinkRb);
        c.add(grayRb);

        colorSelect=new ButtonGroup();

        colorSelect.add(blackRb);
        colorSelect.add(blueRb);
        colorSelect.add(orangeRb);
        colorSelect.add(greenRb);
        colorSelect.add(yellowRb);
        colorSelect.add(redRb);
        colorSelect.add(pinkRb);
        colorSelect.add(grayRb);

    }


    public void paint(Graphics g){
        super.paint(g);
        g.setColor(currentColor);

        switch (num) {
            case 0:
                g.fillRect(50,25,125,25);
                g.fillRect(50,50,25,175);
                g.fillRect(50,200,125,25);
                g.fillRect(150,25,25,175);
                break;

            case 1:
                g.fillRect(75,25,75,25);
                g.fillRect(100,50,50,125);
                g.fillRect(50,175,150,25);
                break;

            case 2:
                g.fillRect(50,25,125,25);
                g.fillRect(150,50,25,50);
                g.fillRect(50,100,125,25);
                g.fillRect(50,175,125,25);
                g.fillRect(50,125,25,50);
                break;

            case 3:
                g.fillRect(150,50,25,175);
                g.fillRect(50,50,100,25);
                g.fillRect(50,125,100,25);
                g.fillRect(50,200,100,25);
                break;

            case 4:
                g.fillRect(50,25,25,75);
                g.fillRect(50,100,100,25);
                g.fillRect(150,25,25,175);
                break;

            case 5:
                g.fillRect(50,25,125,25);
                g.fillRect(50,50,25,50);
                g.fillRect(50,100,125,25);
                g.fillRect(50,175,125,25);
                g.fillRect(150,125,25,50);
                break;

            case 6:
                g.fillRect(50,25,125,25);
                g.fillRect(50,50,25,50);
                g.fillRect(50,100,125,25);
                g.fillRect(50,175,125,25);
                g.fillRect(150,125,25,50);
                g.fillRect(50,125,25,50);
                break;

            case 7:
                g.fillRect(50,25,125,25);
                g.fillRect(150,50,25,150);
                break;

            case 8:
                g.fillRect(50,25,125,25);
                g.fillRect(50,50,25,50);
                g.fillRect(50,100,125,25);
                g.fillRect(50,175,125,25);
                g.fillRect(150,125,25,50);
                g.fillRect(50,125,25,50);
                g.fillRect(150,50,25,50);
                break;

            case 9:
                default:
                g.fillRect(50,25,125,25);
                g.fillRect(50,50,25,50);
                g.fillRect(50,100,125,25);
                g.fillRect(50,175,125,25);
                g.fillRect(150,125,25,50);
                g.fillRect(150,50,25,50);
                break;
        }
    }

    public void itemStateChanged(ItemEvent e) {        
        if(e.getSource()==blackRb)
            currentColor=Color.black;
        else if(e.getSource()==blueRb)
            currentColor=Color.blue;
        else if(e.getSource()==orangeRb)
            currentColor=Color.orange;
        else if(e.getSource()==greenRb)
            currentColor=Color.green;
        else if(e.getSource()==yellowRb)
            currentColor=Color.yellow;
        else if(e.getSource()==redRb)
            currentColor=Color.red;
        else if(e.getSource()==pinkRb)
            currentColor=Color.pink;
        else if(e.getSource()==grayRb)
            currentColor=Color.gray;
        repaint();
    }

    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Ok"))
            num=Integer.parseInt(numberTF.getText());
        repaint();
    }
}
...