2015-01-25 3 views
2

Java를 처음 사용했습니다. 그리고 네 도움이 필요해.JOptionPane을 표시 할 수 없습니다 - Java Swing

내 코드는 JDialog으로 나타날 때까지 잘 동작합니다. 메시지 대화 상자 (JOptionPane)를 표시하는 버튼이 있습니다. 버튼을 클릭하면 문제가 발생합니다. 메시지 대화 상자가 나타나지 않는 것 같습니다. 그것은 더 붙어있는 것 같고 닫을 수 없으며 내 Eclipse에서 종료되어야합니다.

누군가 JOptionPane이 (가) 왜 표시되지 않는지 알려주십시오. 그리고 그 파라미터에 parentComponent의 의미가 무엇인지 모르겠습니다.

여기 내 코드입니다.

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JDialog; 
import javax.swing.JButton; 
import javax.swing.JOptionPane; 

@SuppressWarnings("serial") 
public class Test extends JDialog implements ActionListener { 

    private JButton testPane = new JButton(" Test Pane "); 

    Test() { 

     initComp(); 

    } 

    private void initComp() { 

     this.setSize(300, 200); 
     this.setLocationRelativeTo(null); 
     this.setTitle("Test"); 
     this.setAlwaysOnTop(true); 
     this.setResizable(false); 
     this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     this.setLayout(null); 

     testPane.setBounds(47, 25, 200, 120); 
     this.add(testPane); 
     testPane.addActionListener(this); 

    } 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 

     JOptionPane.showMessageDialog(null, "Does it show?"); 

    } 

} 
+0

좋지 않은 경우가 아니라면'setLayout (null)'을 사용하지 마십시오. –

답변

3

먼저, JFrame 표시 얻을 수 있도록 initComp에 다음 문을 추가해야합니다 : 대화 상자를 표시 할 때

private void initComp() { 
    ... 
    this.setVisible(true); // add this to show the frame 

    ... 
} 

, 그것은 표시됩니다 있도록 현재 JFrame에 부모 구성 요소를 설정 프레임 자체 :

@Override 
public void actionPerformed(ActionEvent arg0) { 
    JOptionPane.showMessageDialog(this, "Does it show?"); // add this as parent 
} 
+0

좋은 대답입니다. 그것은 작동합니다. 고맙습니다. – user3584443