20

JPanelをスクロール可能にする方法は?スクロール可能なインターフェイスを、それを含むパネルに追加するときに、まだ実装しました

tabbedPane.add("Editor", new JScrollPane(storeyEditor = new MNScrollablePanel()));

何も機能しません

コード:

public class MNScrollablePanel extends JPanel implements Scrollable {

    public Dimension getPreferredScrollableViewportSize() {
        return getPreferredSize();
    }

    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
        return 10;
    }

    public boolean getScrollableTracksViewportHeight() {
        return false;
    }

    public boolean getScrollableTracksViewportWidth() {
        return false;
    }

    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
        return 10;
    }
}
4

5 に答える 5

30

このように私と一緒に働いた....

JPanel test = new JPanel();
test.setPreferredSize(new Dimension( 2000,2000));
JScrollPane scrollFrame = new JScrollPane(test);
test.setAutoscrolls(true);
scrollFrame.setPreferredSize(new Dimension( 800,300));
this.add(scrollFrame);
于 2011-07-05T11:42:32.667 に答える
12

を使用する必要がありJScrollPaneます。そして、setViewportview(Component);を呼び出します。

スクロール可能を実装する必要はありません、JPanelはすでにスクロール可能です

于 2009-09-06T14:02:47.927 に答える
1

他のすべての投稿で述べたように、Scrollable インターフェースを自分で実装する理由はありません。ただし、遊んでいるだけなら、投稿された基本的なコードは合理的に見えます。ただし、このコードの使用方法を示すデモ プログラムを投稿していません。今後は、質問とともに SSCCE を投稿してください。SSCCE が何であるかわからない場合は、Web を検索してください。

考えられる問題は、スクロールペインのビューポートに追加されたコンポーネントの「優先サイズ」がスクロールペインのサイズより大きい場合に、スクロールバーが自動的に表示されることです。

そのため、パネルでカスタム ペイントを行う場合は、パネルの変更に合わせてパネルの適切なサイズを設定する必要があります。コンポーネントとレイアウト マネージャーを含むパネルを使用している場合は、これについて心配する必要はありません。ただし、null レイアウト マネージャーでコンポーネントを使用している場合は、問題も発生します。

パネルをどのように使用しているかのコンテキストがわからないため、SSCCE が必要です。

于 2009-09-06T15:02:52.017 に答える
1

JPanel は Scrollable を実装していません。Scrollableを実装し、より多くの機能を備えた SwingX のJXPanelを使用することをお勧めします。

于 2012-05-30T11:33:52.070 に答える