我有类DnyMesice是什么创建了许多JButton实例。每个实例都包含变量poznamkaDne。这个类DnyMesice包含actionListener来查找推送的JButton的poznamkaDne值。 我有类Gui是什么创建了一个提到的类DnyMesice的实例和一个JTextArea的实例。 如果推送了一些JButton(在类DnyMesice中),我如何刷新JTextArea(名称poznamkovePole)的值?
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);
}
}
}
public class Gui extends JFrame {
...
public void zobrazKalendar(){
...
panel3 = new JPanel();
panel3.setLayout(new FlowLayout());
add(panel3);
JTextArea poznamkovePole;
poznamkovePole = new JTextArea();
poznamkovePole.setColumns(30);
poznamkovePole.setRows(5);
poznamkovePole.setText(panel2.poznamkaDne);
panel3.add(poznamkovePole);
}
现在程序在JTextArea中只显示“第一个音符”(在创建实例JButton时定义)但是在ActionListener操作后刷新它会很热吗?
答案 0 :(得分:0)
如果您愿意,可能会更好:
添加到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);
}
}
}
P.S。 - 请不要忘记使用Code Conventions for the Java
答案 1 :(得分:0)
修改如下:
// 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上面说的那样组合你的课程。