Java Swing의 자식 프레임에서 부모 프레임 관리
문제
매개 변수를 얻는 입력 프레임 (child)을 생성하는 jframe (부모)이 있습니다.
"child"프레임에는 "OK"및 "CANCEL"버튼이 있습니다.
"OK"버튼을 누르면 부모 프레임을 새 데이터로 업데이트해야합니다.
그렇게하는 가장 좋은 방법은 무엇입니까?
해결책
자식 프레임을 만들거나 표시 할 때 상위 프레임을 참조하십시오. 이를 위해서는 과부하 된 생성자 또는 디스플레이 방법이 필요합니다.
자녀가 참조를 얻으면 물론 updatedate ()와 같이 부모가 공개적으로 노출하는 모든 방법을 호출 할 수 있습니다 ()
다른 팁
Java 1.3 기준
public class MyPanel extends JPanel
{
public MyPanel() {
....
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// <<<< HERE'S THE INTERESTING BIT >>>>
javax.swing.SwingUtilities.getWindowAncestor(MyPanel.this).dispose();
}
}
);
add(cancelButton);
.....
}
}
JFrame에 ActionListener를 구현하고 AddActionListener를 사용하여 버튼에 추가 할 수 있습니다.
모든 프레임 / 대화 상자에 'unker ()'메소드를 넣고 싶습니다. 올바른 양식으로 결과를 반환 할 수 있습니다.
대화 상자에서 반환 값의 예 :
private static class MyDialog extends JDialog {
String result;
private JButton btnOk = new JButton("OK");
public MyDialog() {
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setModalityType(ModalityType.APPLICATION_MODAL);
add(btnOk);
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
result = "Ok";
setVisible(false);
}
});
}
public String launch() {
result = "Cancel";
pack();
setVisible(true);
return result;
}
}
제휴하지 않습니다 StackOverflow