2016-06-13 2 views
0

두 개의 숫자를 더하고 JLabel에 표시하는 간단한 계산기 용 프로그램을 작성하려고합니다. 작업 윈도우, 버튼 등을 디자인 할 수 있었지만, 스레드의 예외 버튼을 클릭하면 "AWT-EventQueue-0" java.lang.NullPointerException - 오류가 발생하고 해결 방법을 모르겠습니다. 여기 Java : 스레드 "AWT-EventQueue-0"의 예외 java.lang.NullPointerException?

코드입니다 :

import java.awt.EventQueue; 

public class Rechnerwin { 

private JFrame frame; 
private JTextField textFielda; 
private JTextField textFieldb; 
private JLabel label; 
int A; 
int B; 
int C; 
String a; 
String b; 
String c; 


public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Rechnerwin window = new Rechnerwin(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

public Rechnerwin() { 

    initialize(); 
} 


private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    textFielda = new JTextField(); 
    textFielda.setBounds(44, 41, 86, 20); 
    frame.getContentPane().add(textFielda); 
    textFielda.setColumns(10); 

    textFieldb = new JTextField(); 
    textFieldb.setBounds(307, 41, 86, 20); 
    frame.getContentPane().add(textFieldb); 
    textFieldb.setColumns(10); 

    JButton btnAdd = new JButton("Add"); 
    btnAdd.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 

      String a = textFielda.getText(); 
      String b = textFieldb.getText(); 
      int A = Integer.parseInt(a); 
      int B = Integer.parseInt(b); 
      int C = A + B; 
      String c = Integer.toString(C); 
      label.setText(c); 
     } 
    }); 
    btnAdd.setBounds(169, 85, 89, 23); 
    frame.getContentPane().add(btnAdd); 

    JLabel label = new JLabel("a"); 
    label.setBounds(146, 184, 131, 20); 
    frame.getContentPane().add(label); 
    } 
} 
+1

을 당신이되었습니다 알고 :

당신은 아마이 변경이 문제를 해결 할 것인가? 왜 아직도 물어 봤어? 그냥 이전 대답을 읽어 – Li357

+1

http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – Michael

+0

내가 텍스트에서 언급했듯이 해결책을 찾았지만 아무것도 찾지 못해 나를 도울 수있어. – DerMaksi

답변

0

버튼에 리스너 전에 레이블을 이동하려고

예 :

JLabel label = new JLabel("a"); 
label.setBounds(146, 184, 131, 20); 
frame.getContentPane().add(label); 

JButton btnAdd = new JButton("Add"); 
btnAdd.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 

    String a = textFielda.getText(); 
    String b = textFieldb.getText(); 
    int A = Integer.parseInt(a); 
    int B = Integer.parseInt(b); 
    int C = A + B; 
    String c = Integer.toString(C); 
    label.setText(c); 
    } 
    }); 
0

문제는 아마 청취자 당신이하려고한다는 것입니다 Rechnerwin 클래스의 구성원 label에 대한 텍스트를 설정하십시오. 그러나이 멤버는 초기화되지 않습니다. 단추 수신기를 연결 한 후 사용자 label과 동일한 이름의 JLabel을 UI에 추가합니다. 그러나 이것들은 두 개의 다른 변수이고 지역 변수 만 초기화됩니다. 당신이 전에 질문을 받았다 인정하는 경우

... 
label = new JLabel("a"); 
label.setBounds(146, 184, 131, 20); 
... 
관련 문제