如何正确地将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()));
}
我有一个任务要创建类似 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()));
}