Хотите, чтобы результат отображался в форме - PullRequest
0 голосов
/ 25 ноября 2018

Я хочу, чтобы результат отображался в форме.

Почему этот код не работает?

package Swing1_1;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Swing2 {
       public static void main(String args[])
        {
           Addition obj=new Addition();
            obj.setVisible(true);
       }
    }
     class Addition extends JFrame implements ActionListener 
    {
        JTextField t1,t2;
        JLabel lbl;
        JButton b1;
       public Addition()
       {
            JTextField t1=new JTextField(20);
            JTextField t2=new JTextField(20);
            JLabel lbl=new JLabel("Result");
            JButton b1=new JButton("OKey");
             add(t1);
           add(t2);
            add(b1);
            add(lbl);
            setLayout(new FlowLayout());
             //setVisible(true);
           setSize(400,400);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          b1.addActionListener(this);// 
         }

     public void actionPerformed( ActionEvent ae) 
           {
              int num1,num2,value;
               num1=Integer.parseInt("12");
               num2=Integer.parseInt("20");

            value=num1+num2;
              //System.out.println(value +"");
            lbl.setText(value +"");
        }
     }

1 Ответ

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

Проблема вашей реализации в том, что вы объявили переменную lbl [1] как переменную instance в классе Addition, а в constructor вы снова объявили новую переменную lbl [2] (то же имя)как local переменная и конкретизированная.В методе actionPerformed вы сбрасываете значение переменной lbl, но здесь она пытается сбросить значение lbl [1].Поэтому это вызывает исключение, потому что мы не можем сбросить значение до переменной ссылочного типа без создания экземпляра.Таким образом, код должен следовать за этим;

class Addition extends JFrame implements ActionListener {
    JTextField t1, t2;
    JLabel lbl;
    JButton b1;

    public Addition() {
        JTextField t1 = new JTextField(20);
        JTextField t2 = new JTextField(20);
        lbl = new JLabel("Result");
        JButton b1 = new JButton("OKey");
        add(t1);
        add(t2);
        add(b1);
        add(lbl);
        setLayout(new FlowLayout());
        // setVisible(true);
        setSize(400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        b1.addActionListener(this);//
    }

    public void actionPerformed(ActionEvent ae) {
        int num1, num2, value;
        num1 = Integer.parseInt("12");
        num2 = Integer.parseInt("20");

        value = num1 + num2;
        // System.out.println(value +"");
        lbl.setText(value + "");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...