을 연 후 JDialog를에 JTextArea에 텍스트를 설정할 수 없습니다 나는 마지막 열이있는 ActionListener 인 JButton를하는 JTable가 있습니다자바 스윙 : 그것은
private class EventDetailActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
final long seqEventSel = tblModelEvents.getEventSeq(tblEvents.getSelectedRow());
final String eventDetail = tblModelEvents.getEventDetail(tblEvents.getSelectedRow());
new DialogEventDetail(seqEventSel).setDetailText(eventDetail);
}
});
}
}
및 JDialog를위한 클래스입니다 :
public class DialogEventDetail extends JDialog {
private JTextArea txtAreaDetail;
public DialogEventDetail(JFrame parent) {
/* Building JDialog with its size and a BorderLayout
with a JScrollPanel at CENTER containing a
txtAreaDetail */
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setVisible(true);
}
public void setDetailText(String text) {
this.txtAreaDetail.setText(text);
}
}
이 JDialog는, TableModel에 보관 유지되고있어 JTable가로드 될 때 즉시 보이지 않는 긴 XML 텍스트를 표시하기 위해서 사용됩니다. JTextArea는 사용자가 편집 할 수 없지만 JDialog가 표시된 후 항상 비어있는 이유를 이해할 수 없습니다. 내부에 텍스트가 없습니다. 대신, 생성자 내에
this.txtAreaDetail.setText(text);
을 호출하면 텍스트가 나타납니다. 이유가 무엇인가요?
모달 대화 상자에서 setVisible을 호출하면 대화 상자가 삭제 될 때까지 UI가 차단되므로 생성자를 사용하는 것이 가장 좋은 방법이라고 생각하십시오. 그러나 현재 귀하의 대화 상자가 모달이 아니기 때문에 이런 일이 있어서는 안됩니다. – Ansharja
방금 발견했습니다! 예, JDialog는 모달입니다. 나는 그것을 언급하는 것을 잊었습니다. setDetailText() 내에서 setVisible() 메서드를 움직이는 것이 이제는 효과가있는 것 같습니다. –