2014-02-12 59 views
3

由於標題說我有左側的JList和右側的JTextArea。JTextArea - setText()和append()不工作在偵聽器方法()

設置我的偵聽器(JList中的makeTextPanel)方法是這樣的:

listSelectionModel = list.getSelectionModel(); 
listSelectionModel.addListSelectionListener(this); 

,其中被稱爲上的動作事件的方法是:

//This method is required by ListSelectionListener. 
public void valueChanged(ListSelectionEvent e) { 
    System.out.println("HEY"); 
    textArea.setText(null); 
    textArea.setText("1: \n"); 
    textArea.append("2: \n"); 
    textArea.append("3: \n"); 
    textArea.append("4: \n"); 
    } 

事件發生,因爲在終端,我可以看到「HEY」,但沒有打印到文本區。如果我在創建textarea後嘗試在makeTextPanel()方法中打印到textarea,那麼它將打印。哪裏不對?爲什麼不在事件方法valueChanged中打印?我真的很感激,如果有人可以看看我在這裏失蹤。

Full code:

+0

你的代碼中有一個'error'。我無法編譯它。編輯代碼 – Aarav

+0

,這是公共構造函數的名字。我仍然不知道textarea出了什麼問題,雖然 – user2644819

回答

5

它按照您的代碼工作。您已在全球範圍內聲明textAreaJList,因此這兩個將僅保存最近的實例,即您在創建edit選項卡時創建的實例。所以如果您看到編輯選項卡,您的textArea將會在該方法中設置該文本。

您必須爲所有選項卡保留textAreaList的不同實例,然後只有它會產生所需的行爲。

希望這會有所幫助。

+0

+1斑點:-) – kleopatra

+0

@kleopatra謝謝:) – Sanjeev

相關問題