지금까지 JFrame에서 발생하는 모든 작업이 JFrame에 머무르는 것으로 보입니다. 의 당신이 있다고 가정 해 봅시다메인 프로그램의 문자열에 JFrame 출력 저장
(아마 대신 스윙의 자바 FX에 입수했습니다한다) JFrame의 클래스 다음과 같이 ActionListener를 구현 중첩 클래스 이름 HandlerClass에 JButton의를 사용 (gui_frame) :
public class gui_frame extends JFrame {
private JButton button1;
public gui_frame() {
super("Title");
setLayout(new FlowLayout());
button1 = new JButton("Hello");
add(button1);
HandlerClass handler = new HandlerClass();
button1.addActionListener(handler);
}
private class HandlerClass implements ActionListener{
public void actionPerformed(ActionEvent e){
//insert code here
}
}
}
그리고 이 gui_frame 클래스를 호출하는 주 코드가 있습니다.
public class main {
public static void main(String[] args){
//insert some unrelated code here
gui_frame gf = new gui_frame();
gf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gf.setSize(400,75);
gf.setVisible(true);
String button_name;
//insert some code that uses button_name
}
}
기본적으로, 나는 실행하는 동안, 메인 클래스의 문자열 BUTTON_NAME에, 클릭을 한 후, (이 경우 "안녕하세요"에서)이 JFrame의 클래스 gui_frame에있는 버튼의 이름을 저장하기 위해 노력하고있어 시각.
이것이 가능합니까? 이것이 일어나게하려면 gui_frame의 actionPerformed 메소드에 무엇을 삽입해야합니까?
* "지금까지는 JFrame에서 일어나는 모든 일이 JFrame에 남아 있습니다."* 틀렸어! 코드에 따라 다릅니다. 'JFrame'은 라스베가스가 아닙니다. 이러한 코드 차이는'public class gui_frame extends JFrame {'**'JFrame' **을 확장하지 마십시오. ** 메소드의 기능을 변경하지 않는 한. 그냥 프레임의 인스턴스를 사용하십시오. 'button_name' 속성의 범위 내에있는 액션 리스너를 가진 버튼을 그 안에 넣고 수행 된 액션의 속성을 업데이트하십시오. * "(아마도 Swing 대신 JavaFX에 있어야만합니다.) * 아니요, 프로그래밍하는 법을 배우는 것이 더 낫습니다. –
.. Java-FX를 많이 사용하면 문제가 발생합니다. 옆으로, 프레임은 넌 모달이기 때문에,'button_name을 사용하는 코드를 삽입 할 때'button_name'은 여전히 초기화되지 않습니다. 당신은 여기 '마술에 의한 코딩'입니다. 그것은 결코 작동하지 않습니다. –
모달 설명 주셔서 감사합니다. 지금부터는 JDialog를 사용해 보겠습니다. –