【发布时间】:2019-08-14 02:13:42
【问题描述】:
我有扩展 JFrame 的 Home 类,它包含一个静态变量 panel_event。我有另一个名为EventLabel 的类,它创建了一个标签及其功能,并使用refresh() 方法将其添加到面板中,代码运行没有错误,但我的panel_event 内容没有得到更新“显示”
我已经添加了revalidate()和repaint()方法
public EventLabel(String name2, String date2, int priority2, String note2) {
super();
this.name = name2;
this.date = date2;
this.priority = priority2;
this.note = note2;
}
public void buildLabel() {
label = new JLabel(this.getName());
label.setBounds(10, 11, 403, 34);
label.setForeground(Color.WHITE);
label.setFont(new Font("Yu Gothic UI Light", Font.PLAIN, 20));
String n = this.getNote();
String d = this.getDate();
int p = this.getPriority();
String na = this.getName();
setFont(new Font("Yu Gothic UI Light", Font.PLAIN, 20));
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
EventDetailFrame detailFrame = new EventDetailFrame();
detailFrame.NewWindow();
detailFrame.textAreaNoteD.setText(n);
detailFrame.textFieldNameD.setText(na);
detailFrame.textFieldDateD.setText(d);
detailFrame.textFieldPriorityD.setText("Priority");
}
});
}
public void refresh(){
panel_event.add(label);
panel_event.revalidate();
panel_event.repaint();
}
这是带有按钮的框架,假设更改panel_event的内容
btnSaveAndClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String name = txtEventName.getText();
String date = txtEventDate.getText();
String note = txtEventNote.getText();
int priority = getPriorityNumber(txtEventPriority.getText());
Event event = new Event(name, date, note, priority);
EventLabel event_label = new EventLabel(event.getName(),event.getDate(),event.getPriority(),event.getNote());
event_label.buildLabel();
event_label.refresh();
dispose();
}
});
点击btnSaveAndClose后,我预计panel_event会显示我的新JLabel
【问题讨论】:
标签: java swing jframe jpanel jbutton