-1

我对此很陌生,尽管阅读了文档,但我不明白类如何正确通信,我想我需要一个工作示例来深入了解它。

我有一个 Jlist 和一个 JEditorPane 共享一个 JSplitPane。列表功能很好,但是我的 Jeditorpane 在另一个类中,我通过以下方式获得了我需要的字符串:

public void setBookmarkPreview(ListSelectionEvent evt) {
bookmarkString = (String)this.getSelectedValue();
//System.out.println(bookmarkString);

这一切都有效,但是我不知道如何将此字符串传递给扩展 JEditorPane 的“BookmarkPreview”类,这样我就可以在第二个类的编辑器窗格中显示上面检索到的结果。

我试过在线阅读,但我无法理解上下文。

我建立

public static String bookmarkString;

认为它将根据我的列表侦听器方法进行更新,但类 2 中的结果打印“null”,所以我显然在这里遗漏了一些东西。

这是我尝试调用公共静态字符串的第二个类

public class BookmarkPreview extends JEditorPane {

public BookmarkPreview() {

BookmarkPane test = new BookmarkPane();

this.setEditable(false);
setText(BookmarkPane.bookmarkString);
System.out.println(BookmarkPane.bookmarkString);
}   
}

请,如果您可以使用我的措辞提供一个示例,将不胜感激,将我引导到文档将无济于事,我向您保证,您多年来一直在尝试从头开始围绕它。

*更新**

好的,我已经创建了 getter/setter:

public void bookmarkPreview(ListSelectionEvent evt) {
bookmarkString = (String)this.getSelectedValue();
setBookmarkString(bookmarkString);
 }


public String getBookmarkString() {
    return bookmarkString;
}

public void setBookmarkString(String bookmarkString) {
    this.bookmarkString = bookmarkString;
}

并更新了想要接收它的类:

public BookmarkPreview() {
BookmarkPane test = new BookmarkPane();
test.getBookmarkString();
this.setEditable(false);
setText(test.getBookmarkString());
System.out.println(test.getBookmarkString());
}   
}   

JEdi​​torPane 中仍然没有出现任何内容。

4

1 回答 1

1

这将取决于您希望以哪种方式进行通信。

在我看来,编辑器并不关心书签列表,但列表会想知道编辑器(因此它可以设置书签)。

我要做的是在列表组件中维护对编辑器的引用(通过构造函数或某种类型的设置器传入),这将允许列表,当它被更改为调用将更新书签的编辑器的方法时位置(如setBookMark)。

同样,我会允许列表在其当前位置向编辑请求书签,可能是类似newBookMark或这样的

于 2013-04-18T00:00:24.170 回答