【问题标题】:Using JTextarea with JTabbedPanel将 JTextarea 与 JTabbedPanel 一起使用
【发布时间】:2013-06-30 04:25:58
【问题描述】:

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 没有更新。

【问题讨论】:

  • 我不明白 ta 的值始终为 ONE ,应该只更新一个,因为您只更新一个,您可能需要 textArea 的 Collection ..
  • 您为什么期望这段代码应该更新两个文本区域?您只更新 ta ,它只是 1 个文本字段。您一次又一次地“重新初始化”同一个文本区域。所以最后初始化的 textarea 得到了文本。
  • @Optional 有什么办法可以将文本放到当前标签的文本区域中?
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing jscrollpane jtextarea jtabbedpane


【解决方案1】:

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

【讨论】:

  • 抱歉.. @nachokk 我看到了部分:for(JTextArea ta : textAreas){ 给我一个错误(找不到局部变量)
  • @user2471839 你应该在你的类中声明为一个全局变量,将所有类的范围像这样private List<JTextArea> textAreas = new ArrayList<>();
  • 对不起...上面的代码不能按我的需要工作。还有其他解决方案吗?
  • @user2471839 你需要什么?如果您的问题更清楚,我们可以提供帮助
  • 我需要将文本放在所选标签的文本区域中。问题是,当第二个文本区域被激活时,文本进入第二个文本区域
猜你喜欢
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多