JTabbedPane 动态标签

JTabbedPane dynamically tabs

我正在创建一种记事本,它有一个行计数器窗格告诉我行的位置(当我按 Enter 时它会增加)和另一个行和列计数器窗格(就像 Notepad++ 一样)。我想动态添加选项卡,所以每次我 select "New" 选项时,都会创建一个新选项卡。默认情况下,我的记事本从打开一个选项卡开始,就像 Notepad++ 一样。让我们将此选项卡命名为 TAB1

现在如果我想 select TAB2 编辑里面的东西,这就是我的程序不能正常工作的地方,因为如果我想按回车键换行,它不会在 TAB2 中添加一个新行,它将在 TAB3 中添加一个新行。我该如何解决这个问题?

这是 ActionListener ,我会在其中说明如果我从菜单栏中按 "New" 会发生什么。 state() 是我进行布局的函数。

if(menuFileNew == e.getSource())
    {   
        state();        
            Action newline = new AbstractAction() 
            {
               public void actionPerformed(ActionEvent e) 
               {
                    thisTextArea.setText(thisTextArea.getText()+"\n");
                   counter++;
                thisLineCounterPane.setText(thisLineCounterPane.getText()+counter+"\n");            
               }
            }; 
        thisTextArea.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), NEWLINE);
        thisTextArea.getActionMap().put(NEWLINE, newline);
    }
thisTextArea.setText(thisTextArea.getText()+"\n");

你"new line"操作不正确。您正在对要更改的文本区域变量进行硬编码。

相反,您的 Action 应该扩展 TextAction(而不是 AbstractAction)。然后可以使用TextActiongetFocusedComponent()方法获取当前获得焦点的文本区域。

查看一个简单示例:

此外,这不是向文本字段添加换行符的方法。不要使用 setText() 方法。相反,您应该使用 append(...) 方法。

尽管真正的问题是您为什么要创建此操作?向文本区域添加换行符是按 Enter 键时的默认行为。