我有一个JTable,其中最后一列是一个JButton,其ActionListener是:
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持有的长XML文本,但在JTable加载时不会立即显示为suer。 JTextArea无法由用户编辑,但我无法理解为什么JDialog出现后它总是为空。 里面没有文字显示。相反,如果我打电话
this.txtAreaDetail.setText(text);
在构造函数中,文本出现。 为什么这样?
答案 0 :(得分:1)
尝试使用
this.txtAreaDetail.revalidate();
this.txtAreaDetail.repaint();
使用EventQueue而不是SwingWorker的任何特定原因。
由于我无法添加评论,因此将其作为答案发布。