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);
}
}
'JApplet'을 확장하는 2 개의 클래스가 있습니다. 'ButtonHandlerR'에 대해서도 2 개의 생성자가 있습니다. 'new SetTextColour()'와'new Text()'는 서로에 대한 지식이 없으므로 참조를 다른 것으로 전달하지 않으므로. 이 방법이 효과가 없을 것입니다. 아기 단계부터 시작하여 Java 작동 방식을 배우십시오. –
색상 변경에 대한 자세한 내용은'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 /)를 사용합니다. .. –
.. 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). –