幅を固定したいというJScrollPane
ウィズがあります。FlowLayout
垂直方向にのみスクロールする必要があり、ウィンドウのサイズを変更するとコンテンツが自動的に再配置されるはずです。のような方法があるはずだと思いますが、setEnableHorizontalScroll(false)
見つかりません。
これを行う簡単な方法はありますか?
幅を固定したいというJScrollPane
ウィズがあります。FlowLayout
垂直方向にのみスクロールする必要があり、ウィンドウのサイズを変更するとコンテンツが自動的に再配置されるはずです。のような方法があるはずだと思いますが、setEnableHorizontalScroll(false)
見つかりません。
これを行う簡単な方法はありますか?
以下を使用できます。
import static javax.swing.ScrollPaneConstants.*;
// ...
JScrollPane.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);
...しかし、これは水平スクロールバーが表示されないようにするだけです。
コンテンツを自動的に並べ替えるには、コンテンツが何であるかによって異なります。JTextPane
orJEditorPane
が自動的にこれを行います (上記のコードは必要ありません) 。
最後に、この非常に短い例を参照してください。高度なトリックは必要ありません。
public class MyTest extends JFrame {
public static void main(String[] args) {
MyTest test = new MyTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setSize(300, 200);
test.setVisible(true);
}
public MyTest() {
String[] data = {
"Arlo", "Cosmo", "Elmo", "Hugo",
"Jethro", "Laszlo", "Milo", "Nemo",
"Otto", "Ringo", "Rocco", "Rollo"
};
JList list = new JList(data);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(0);
JScrollPane scroll = new JScrollPane(list);
this.add(scroll);
}
}
Sunのチュートリアルから適応
これは、JDK でそのまま使用できるカスタム ソリューションではありません。
WrapLayoutを使用できます。
または、カスタム パネルを作成して Scrollable インターフェイスを実装することもできます。この場合の重要な点は、getScrollableTracksViewportWidth() をオーバーライドして true を返すことです。そのため、パネルの幅ではなくビューポートの幅がレイアウトの目的で使用されます。このアプローチの例は、ScrollableFlowPanelにあります。
JScrollPane の ViewportView として、javax.swing.JPanel の代わりに org.jdesktop.swingx.JXPanel を使用できます。
1.「SwingX 1.6.4 All - Binary」をダウンロードし、jar ファイルをプロジェクトのライブラリに追加します。
2. JXPanel を JPanel の代わりに JScrollPane の ViewportView として設定します。
JScrollPane scrollPane = new JScrollPane();
JXPanel panel = new JXPanel();
scrollPane.setViewportView(panel);
3.次の 2 つのステートメントを追加します。
panel.setScrollableTracksViewportHeight(false);
panel.setScrollableTracksViewportWidth(true);
4.次に、JPanel に行ったように、要素を JXPanel に追加できます。
これを試してみてください、これは私にはうまくいきます jScrollPane1.setHorizontalScrollBar(null);
私もこの問題に遭遇しました...私の解決策は、JScrollPaneソースコードを変更し、水平スクロールを無効にする追加のパラメーターを渡すことでした。編集は本当に簡単です:
53行目:
$.fn.jScrollPane = function (settings, horizontalScrollingEnabled) {
次に、177行目:
if (horizontalScrollingEnabled) {
isScrollableH = percentInViewH > 1;
} else {
isScrollableH = false;
}
変更する必要があるのはそれだけです。変更されたソースコードを縮小して、ページに含めます。jScrollPaneを初期化するときに、次のように水平方向にスクロールするかどうかを設定できるようになりました。
$('.scroll-pane').jScrollPane("", false);
お役に立てば幸いです。
水平バーの CSS クラスを使用して、表示を「なし」に設定するだけです。jScrollPlane の下部 (初期化後) に、以下を追加します。
$('.jspHorizontalBar').css({ 'display': 'none' });
ページで倍数を使用していて、水平バーが必要なものがある場合は、いつでもターゲティングを編集して親要素を含めることができます。
isScrollableH = percentInViewH > 1;
jquery.jscrollpane.js で 削除するだけです