更改另一个类中的JLabel文本(Java)

时间:2013-06-16 05:29:52

标签: java swing jlabel

这让我感到困惑和烦恼了一段时间。我正在为朋友制作一个小程序,基本上这是一个待办事项清单。用户可以使用AddAssignment类创建任务。用户必须完成几个字段,但我正在处理第一个字段,即任务名称。保存任务后,它将添加到列表中,该列表位于ViewAssignments类中。任务名称的JTextField称为textField

我希望lblAssignmentNa中的ViewAssignments文本,textField中的JLabel设置为btnCreateAssignment的文字,AddAssignmenttextField中的按钮{1}}上课。

我只欣赏代码将JLabel的文本更改为与{{1}}的文本相同的答案。谢谢。 如果您对此不了解,我很抱歉。如果您需要更多信息,请告诉我。

3 个答案:

答案 0 :(得分:1)

在回答您之前,我希望您查看此列表:

Writing perfect questions

你可以这么说:当按下按钮而不是这个paragrap时,如何将lable的文本设置为textField的文本。但是这会对你有所帮助:

jLabel.setText(textField.getText());

答案 1 :(得分:1)

创建某种可以将请求传递给ViewAssignments的setter方法,例如setAssignmentName,当用户点击btnCreateAssignment时,只需调用方法,传递{{1来自String的值。

答案 2 :(得分:1)

首先,尝试不要将类名称作为其行为调用AddAssigment是类的错误名称。例如,应该是AddAssignmentPanel。

其次,您应该阅读本教程,然后使用它Property Change Listeners,(基本上是Observer Pattern的实现)。

    在您的情况下,
  • Observer是具有lblAssignmentNa的班级 财产(使用PropertyChangeListener
  • 在您的情况下,
  • Observable是具有textfield的班级 property(使用PropertyChangeSupport

所以你必须做这样的事情。

  1. 将观察者类注册到observable类
  2. 当事件发生时,在你的情况下,btnCreateAssignment按下你应该通知你的观察员。
  3. 因此ViewAssigments应该像这样定义。

    public class ViewAssigments extends Something implements PropertyChangeListener
    

    AddAssigment注册ViewAssigment作为观察员 在btnCreateAssigment事件中,您必须调用propertyChangeSupport.firePropertyChange(..)并将其发送给观察者以通知状态更改。

    此外,如果您的课程扩展JComponent,您已准备好PropertyChangeSupport实例,以便注册ListenersfirePropertyChange(..)