Java 如果在另一个类中执行了某些操作,如何刷新该类的实例
我有类DnyMesice,它创建了许多JButton实例。每个实例都包含变量poznamkaDne。此类DnyMesice包含actionListener,用于查找推送JButton的poznamkaDne值。 我有一个Gui类,它创建了上述类DnyMesice的一个实例和JTextArea的一个实例。 如果某个JButton(在类DnyMesice中)被按下,我如何刷新JTextArea(名称为poznamkovePole)的值Java 如果在另一个类中执行了某些操作,如何刷新该类的实例,java,swing,variables,actionlistener,Java,Swing,Variables,Actionlistener,我有类DnyMesice,它创建了许多JButton实例。每个实例都包含变量poznamkaDne。此类DnyMesice包含actionListener,用于查找推送JButton的poznamkaDne值。 我有一个Gui类,它创建了上述类DnyMesice的一个实例和JTextArea的一个实例。 如果某个JButton(在类DnyMesice中)被按下,我如何刷新JTextArea(名称为poznamkovePole)的值 public class DnyMesice extends J
public class DnyMesice extends JPanel {
public String poznamkaDne="first note";
jButton tlacitkoDen;
public void zobrazMesic(Calendar kalendar){
for (c=1; c<30; c++){
tlacitkoDen = new JButton(Integer.toString(denvMesici));
tlacitkoDen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt) {
poznamkaDne="New note";
};
});
add(tlacitkoDen);
}
}
}
现在,该程序在JTextArea中只显示“第一个注释”(在创建实例JButton时定义),但在ActionListener操作后刷新它会很热?如果您使用: 添加到DnyMesice JTextArea链接并在ActionListener中更改文本
public class DnyMesice extends JPanel {
private JTextArea poznamkaDne;
jButton tlacitkoDen;
public DnyMesice (JTextArea jTextArea){
this.poznamkaDne = jTextArea;
}
public void zobrazMesic(Calendar kalendar){
for (c=1; c<30; c++){
tlacitkoDen = new JButton(Integer.toString(denvMesici));
tlacitkoDen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt) {
poznamkaDne.setText("New note");
};
});
add(tlacitkoDen);
}
}
}
公共类DnyMesice扩展了JPanel{
波兹纳姆卡德内私人住宅区;
特拉西特科登;
公共Dnymesic(JTextArea JTextArea){
this.poznamkaDne=jTextArea;
}
公共空间(日历kalendar){
对于(c=1;c修改如下:
// add these methods
public void setPoznamkaDne(String s) {
poznamkaDne = s;
}
public String getPoznamkaDne() {
return poznamkaDne;
}
// CHANGE this method (KEEP the rest of the code!)
public void actionPerformed(ActionEvent evt) {
setPoznamkaDne("New note");
};
poznamkovePole.setText(panel2.getPoznamkaDne());
这些更改应该允许您更新文本。但是您需要以某种方式调用poznamekovePole.setText()
,或者实现一个高级侦听器类。我建议您组合您的类,如上面所说的@Too Strong Magic。尝试调用poznamekovePole.repaint()
在actionPerformed
方法的末尾。它不起作用。类Dnymesic不知道Poznamkovelope。它是在类Gui中创建的,类Gui创建Dnymesic的实例。不幸的是,ActionListener在类Dnymesic中,如果它与Poznamkovelope在同一个类中,则会容易得多。
// add these methods
public void setPoznamkaDne(String s) {
poznamkaDne = s;
}
public String getPoznamkaDne() {
return poznamkaDne;
}
// CHANGE this method (KEEP the rest of the code!)
public void actionPerformed(ActionEvent evt) {
setPoznamkaDne("New note");
};
poznamkovePole.setText(panel2.getPoznamkaDne());