코드를 컴파일 한 후 두 개의 오류가 발생했습니다.로컬 변수가 내부 클래스 (java) 내에서 액세스됩니다.
오류는 다음과 같습니다
:local variable c_age is accessed within inner class;
needs to be declared final
Object child_age = c_age.getSelectedItem();
이
1
local variable input is accessed within inner class;
needs to be declared final
String name = input.getText();
2
내 코드입니다어떻게이 오류를 해결할 수
import javax.swing.*;
import java.awt.event.*;
public class GUI
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Try GUI");
JLabel l1 = new JLabel("Please Enter Your Child's Name");
JTextField input = new JTextField("",10);
JLabel l2 = new JLabel("Choose Your Child's Age");
String[] age = {"Age","1","2","3","4","5","6"};
JComboBox c_age = new JComboBox(age);
JButton button = new JButton("Search");
JTextArea result = new JTextArea();
JScrollPane extend_area = new JScrollPane(result);
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
String name = input.getText();
Object child_age = c_age.getSelectedItem();
}
});
JPanel panel = new JPanel();
panel.add(l1);
panel.add(input);
panel.add(l2);
panel.add(c_age);
panel.add(button);
panel.add(extend_area);
frame.add(panel);
frame.setSize(350,350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
?
문제 solved.but 당신 explainahope 이해할 수 없다면 더 많이 줄 수 ... 감사합니다 많은 에드워드 – Roubie
발췌 및 자바 언어 사양에 대한 링크를 첨부, 그 도움이되기를 바랍니다 ... – edwardsmatt
최종 사용자가 필요합니다 내부 클래스/클로저에 의해 사용될 때 변수를 변경할 수 없습니다. 그것에 대해 생각해보십시오 : 최종으로 표시되지 않은 경우 내부 클래스 참조는 선언 옆에있는 모든 코드를 수행 할 수 있으므로 동시성 문제를 피하기 위해 최종 것으로 표시해야하며 구문이이를 시행합니다. –