将JTextarea与JTabbedPanel一起使用

时间:2013-07-02 17:12:42

标签: java swing jscrollpane jtextarea jtabbedpane

使用以下代码动态创建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);
                }

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

1 个答案:

答案 0 :(得分:1)

ta一次只有一个值,您需要的是Collection TextArea您需要引用它们,例如List<JTextArea> textAreas < / p>

然后在你的代码中

        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);
               }
}