2016-07-20 4 views
0

나는 Text 클래스의 변수 R, G, B를 변경할 수있는 프로그램을 만들려고합니다. 「SubmitR」버튼을 클릭 해 애플릿을 실행하려고하면 (자), thread AWT-EventQueue-1 java.lang.NullPointerException에 예외가 붙습니다.JTextField ActionListner가 RGB 변수를 변경하지 않습니다

public class Main extends JApplet { 
private ButtonHandlerR buttonHandlerR; 




@Override 
public void start() { 
    super.start(); 
} 


@Override 
public void init() { 


    this.setSize(750, 300); 

    setLayout(new BorderLayout()); 

    add(new SetTextColour(), BorderLayout.NORTH); 
    add(new Text(),BorderLayout.CENTER); 






} 

}

public class SetTextColour extends JPanel { 


private JLabel labelR; 
private JLabel labelG; 
private JLabel labelB; 

public JTextField textR; 
public JTextField textG; 
public JTextField textB; 

public JButton submitR; 
public JButton submitG; 
public JButton submitB; 


public SetTextColour() { 

    labelR = new JLabel("RED: "); 
    labelG = new JLabel("GREEN: "); 
    labelB = new JLabel("BLUE: "); 

    textR = new JTextField(10); 
    textB = new JTextField(10); 
    textG = new JTextField(10); 


    add(textR, BorderLayout.NORTH); 
    submitR = new JButton("SubmitR"); 
    add(submitR, BorderLayout.NORTH); 

    add(textB, BorderLayout.NORTH); 

    submitG = new JButton("SubmitG"); 
    add(submitG, BorderLayout.NORTH); 

    add(textG, BorderLayout.NORTH); 

    submitB = new JButton("SubmitB"); 
    add(submitB, BorderLayout.NORTH); 

    ButtonHandlerB BHB = new ButtonHandlerB(); 
    ButtonHandlerG BHG = new ButtonHandlerG(); 
    ButtonHandlerR BHR = new ButtonHandlerR(this); 

    submitB.addActionListener(BHB); 
    submitR.addActionListener(BHR); 
    submitG.addActionListener(BHG); 


} 

}

public class ButtonHandlerR implements ActionListener { 
private SetTextColour colour; 
private Text text; 


ButtonHandlerR(Text change){ 
    this.text = change; 

} 

ButtonHandlerR(SetTextColour set){ 
    this.colour = set; 

} 






@Override 
public void actionPerformed(ActionEvent e) { 

    JButton Clicked = (JButton) e.getSource(); 
    double tempV; 
    int tempV2; 

    if(colour.submitR == Clicked){ 
     tempV = Double.parseDouble(colour.textR.getText()); 
     tempV2 = (int) tempV; 
     text.R = tempV2; 
     System.out.println(text.R); 
     text.repaint(); 


    } 



} 

}

public class Text extends JApplet { 
private String textField = "Welcome to CE203 Assignment 1 - Hassan Khan, 1404460"; 
public int R=50; 
private int G=32; 
private int B=54; 

public void start(){ 

} 





public void init(){ 




} 

public void paint (Graphics g) { 


    Color customColor = new Color(R, G, B); 

    g.setColor(customColor); 

    g.drawString(textField, 125, 150); 



} 

}

+1

'JApplet'을 확장하는 2 개의 클래스가 있습니다. 'ButtonHandlerR'에 대해서도 2 개의 생성자가 있습니다. 'new SetTextColour()'와'new Text()'는 서로에 대한 지식이 없으므로 참조를 다른 것으로 전달하지 않으므로. 이 방법이 효과가 없을 것입니다. 아기 단계부터 시작하여 Java 작동 방식을 배우십시오. –

+0

색상 변경에 대한 자세한 내용은'JFileChooser'를 참조하십시오. 일반 팁 : 1) [코드 블록의 걸쇠 대괄호 탐지/수정] (http://meta.stackexchange.com/q/251795/155831)을 참조하십시오. 문제는 더 이상 고칠 수 없었습니다. 2) 애플릿을 코딩하는 이유는 무엇입니까? 교사가 지정했기 때문에 [CS 교사가 ** Java 애플릿 교육 **을 중단해야하는 이유] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should?hl=ko)를 참조하십시오. -stop-teaching-java-applets /)를 사용합니다. .. –

+0

.. 3) [Java Plugin support deprecated] (http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/) 및 [Plugin으로 이동하기] 무료 웹] (https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free). –

답변