如何正确地将textarea添加到tabbedpane

How to properly add textarea to tabbedpane

我有一个任务要创建类似 Gedit 的多选项卡编辑器。所以我使用了 JTabbedPane 并在其构造函数中添加了 JTextArea。我在使用方法 textarea.cut(); 时遇到问题;其中 textarea 是 textarea,就好像用户创建新选项卡一样,用户必须能够执行剪切、复制、粘贴。所以我使用了 tabbedPane.getSelectedComponent()。但现在它说组件无法转换为 jTextArea,所以我使用了它的类型转换。问题是我没有得到预期的输出,即它没有正确添加标签 我的问题是如何以干净高效的方式将这些组件添加到选项卡式窗格。任何替代方法都非常受欢迎。

这是我的代码片段。

         //components declared in class Editor which extends Jframe
        JTextArea textarea ;
        JScrollPane scrollpane ;
        JTabbedPane tabbedpane ;

        public Editor(){

    this.setLayout(new FlowLayout());
    tabbedpane = new JTabbedPane();
    tabbedpane.addTab("File",textarea);
    add(tabbedpane);
    scrollpane = new JScrollPane(tabbedpane);
    getContentPane().add(scrollpane, BorderLayout.CENTER);

    //content in my constructor

   //also contains other components but are not shown here. 
   } //end constructor



        //add new Tabs
          newfile = new JMenuItem("New File");
           file.add(newfile);
           newfile.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                   tabbedpane = new JTabbedPane();
                   tabbedpane.addTab("File",textarea);
                   add(tabbedpane);
                  scrollpane = new JScrollPane(tabbedpane);
                  getContentPane().add(scrollpane, BorderLayout.CENTER);
            }//end actionPerformed
           });//end method new 

           this.add(tabbedpane, BorderLayout.CENTER);



             //added cut as JMenuItem to Menu edit Which is then added toJMenuBar



                cut = new JMenuItem("Cut");
                edit.add(cut);
                cut.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ActionEvent){

            JTextArea txtarea = new JTextArea();
            txtarea = (JTextArea)tabbedpane.getSelectedComponent();
                txtarea.cut();

        }//end actionPerformed

    });//end Method cut

选项卡键(选项卡名称)应该不同,您的 TabbedPane 应该只添加一次。

//constructor
public Editor() {
    tabs = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
    add(tabs, BorderLayout.CENTER);
}

//class method
void addFile(String name) {
    tabs.addTab(name, new JScrollPane(new TextArea()));
}