我有两个JPanels leftTextField和rightTexTField,它们都包含一个FileBox实例:
public class FileBox extends Box {
private Box content;
public FileBox(String text) {
super(3); // ?
content = Box.createVerticalBox();
init(text);
}
private void init(String text) {
JTextArea editor = new JTextArea();
editor.setDragEnabled(true);
editor.setText(text);
editor.setEditable(false);
JScrollPane scrollPane = new JScrollPane(editor);
content.add(Box.createVerticalStrut(5));
content.add(scrollPane);
content.add(Box.createVerticalStrut(5));
}
public Box get() {
return content;
}
public void set(Box content) {
this.content = content;
}
}
我还有两个带有actionListeners的按钮,并且一旦触发器被触发,就想执行一些代码。我试过这样的事情:
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(buttonToLeft)) {
FileBox left = (FileBox) leftTextPanel.getComponent(0);
FileBox right = (FileBox) rightTextPanel.getComponent(0);
left.set(right.get());
}
}
但是我确实收到标题中发布的错误消息,我不明白。 FileBox是我的leftTextPanel的一个组件,因为我用leftTextPanel.add(new FileBox())等添加它。是否有任何理由为什么它现在是Box的一个实例而我无法投射它?我该如何解决这个问题?