0

JTextarea 使用以下代码动态创建并添加到 jTabbed 面板:

            // tabidis is a variable with unique value in each case

            JScrollPane panel2 = new JScrollPane();
            panel2.setName(tabidis);

            ta = new JTextArea("");
            ta.setColumns(30);
            ta.setRows(20);
            ta.setEditable(false);
            panel2.setViewportView(ta);
            ta.setName(tabidis);

            jTabbedPane1.add(username4, panel2);

当添加新标签时(ta textarea 随之添加),最后一个标签 textarea 接收所有文本。

 private void jTabbedPane1StateChanged(javax.swing.event.ChangeEvent evt){
                send3 = ta.getName();
                ta.setName(send3);
                ta.setText(ta.getText()+send3);
                }

在上面的代码中,您可以看到两个文本区域(在两个选项卡中)中的文本都应该更新。但真正发生的是只有第二个 TextArea 得到更新。第一个 TextArea 没有更新。

4

1 回答 1

1

ta一次只有一个值,你需要的是一个CollectionTextArea必须引用它们,例如在一个List<JTextArea> textAreas

然后在你的代码中

        JTextArea ta = new JTextArea("");
        ta.setColumns(30);
        ta.setRows(20);
        ta.setEditable(false);
        textAreas.add(ta);

在你的事件中是这样的:

private void jTabbedPane1StateChanged(javax.swing.event.ChangeEvent evt){
                for(JTextArea ta : textAreas ){
                 send3 = ta.getName(); // this line an below are redundant
                 ta.setName(send3);
                 ta.setText(ta.getText()+send3);
               }
}
于 2013-07-02T17:27:57.900 回答