我有一个创建类似Gedit的多重编辑器的任务。所以我使用了JTabbedPane并在其构造函数中添加了JTextArea。我在使用方法textarea.cut()时遇到问题; textarea是textarea,就像用户创建新标签一样,用户必须能够实现剪切,复制,粘贴。所以我使用了tabbedPane.getSelectedComponent()。但是现在它说组件无法转换为jTextArea所以我使用了typecasted it。问题是我没有得到预期的输出,即它没有正确添加标签我的问题是如何添加这些标签窗格中的组件以干净有效的方式。任何替代方法都是受欢迎的。
以下是我的代码片段。
//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
答案 0 :(得分:0)
Tab键(标签名称)应该不同,而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()));
}