簡體   English   中英

在另一個類中更改JLabel的文本(Java)

[英]Changing the Text of A JLabel in Another Class (Java)

這一直使我感到困惑和煩惱。 我正在為一個朋友編寫一個小程序, 基本上,這是一個待辦事項清單。 用戶可以使用AddAssignment類創建任務。 用戶必須完成幾個字段,但是我正在處理第一個字段,即任務名稱。 保存任務后,將其添加到ViewAssignments類中的列表中。 任務名稱的JTextField稱為textField

我想文lblAssignmentNa ,選擇JLabel在ViewAssignments設置為文本textField上的新聞btnCreateAssignment ,在一個按鈕AddAssignment類。

我只希望將JLabel的文本更改為與textField的文本相同的代碼作為答案。 謝謝。 如果您不了解其中的任何內容,我們深感抱歉。 請讓我知道是否需要更多信息。

在回答您之前,我希望您檢查以下列表:

寫完美的問題

您可能會說: 如何在按下按鈕而不是此paragrap 時將標簽的文本設置為textField的文本 但是,這將幫助您:

jLabel.setText(textField.getText());

創建某種可以將請求傳遞給ViewAssignments的setter方法,例如setAssignmentName ,當用戶單擊btnCreateAssignment ,只需調用該方法,並從textField傳遞String值即可。

首先,嘗試不調用類名,因為它的行為AddAssigment對類來說是一個壞名字。 例如,應為AddAssignmentPanel。

其次,您應該閱讀本教程,然后將其用於Property Change Listeners (基本上是Observer Pattern的實現)。

  • 在您的情況下, Observer是具有lblAssignmentNa屬性的類(使用PropertyChangeListener
  • 在您的情況下,可以Observable到的是具有textfield屬性的類(使用PropertyChangeSupport

所以你必須做這樣的事情。

  1. 將觀察者類注冊到可觀察類中
  2. 當發生事件時,按您的情況,按btnCreateAssignment通知觀察者。

所以在ViewAssigments應該這樣定義。

public class ViewAssigments extends Something implements PropertyChangeListener

AddAssigment寄存器ViewAssigment作為觀察者
btnCreateAssigment事件中,您必須調用propertyChangeSupport.firePropertyChange(..)並將其發送給觀察者以通知狀態更改。

此外,如果您的類擴展了JComponent您已經准備好一個PropertyChangeSupport實例,可用於注冊ListenersfirePropertyChange(..)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM