有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JTextarea和JTabbedPanel

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    ta一次只能有一个值,您需要的是Collection{}的Collection。您必须有对它们的引用,例如在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);
                   }
    }