-1

私はこれにまったく慣れていません。ドキュメントを読んでもクラスが適切に通信する方法を理解していません。ドリルインするには実際の例が必要だと思います.

JList と JEditorPane が JSplitPane を共有しています。リスト機能は問題ありませんが、私の Jeditorpane は別のクラスにあり、次の方法で必要な文字列を取得しました。

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

これはすべて機能しますが、この文字列を JEditorPane を拡張する「BookmarkPreview」クラスに渡す方法がわかりません。これにより、上記の取得した結果を 2 番目のクラスのエディター ペインに表示できます。

オンラインで読んでみましたが、文脈を理解できません。

私が作成しました

public static String bookmarkString;

リストリスナーメソッドに基づいて更新されると考えていますが、クラス2の結果は「null」を出力するため、明らかに何かが欠けています。

これは、パブリック静的文字列を呼び出そうとした 2 番目のクラスです。

public class BookmarkPreview extends JEditorPane {

public BookmarkPreview() {

BookmarkPane test = new BookmarkPane();

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

私の言い回しを使って例を挙げていただければ幸いです。ドキュメントに誘導しても役に立ちません。何年もの間、頭をゼロから包み込もうとしてきたことを保証します。

*更新**

わかりましたゲッター/セッターを作成しました:

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 に答える