0

JPanel の JScrollPane に JScrollbar (カスタム UI を使用) と JTextArea を作成しました。スクロールバーを配置できるようにしたいので、スクロールバーをスクロールペインの水平スクロールバーとして追加したくありません。

モデルをスクロールバーに設定してパネルに追加しようとしましたが (コードを参照)、うまくいきませんでした。親指のサイズが正しくなく (常にトラック全体にまたがっていました)、正しく配置されていませんでした。

JPanel panel = new JPanel();
JTextArea textArea = new JTextArea(col, rows);
JScrollPane scrollPane = new JScrollPane(textArea);
JScrollBar scrollBar = new JScrollBar();    
scrollBar.setModel(scrollPane.getHorizontalScrollBar().getModel());
panel.add(textArea);
panel.add(scrollPane);
panel.add(scrollBar)

スクロールバーをテキスト領域にリンクして、サムのサイズと動作が正しく、スクロールバーの位置とサイズを設定できるようにするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

0

デフォルトの動作が必要な場合は、すでに実行しています。JScrollPane実際に表示するには、にいくつかのコンポーネントを追加する必要があります。

以下に例を示します。

public final class Test {
    public static void main(String[] a) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                Container pane = frame.getContentPane();
                JPanel panel = new JPanel();
                JTextArea textArea = new JTextArea(2, 10);
                JScrollPane scrollPane = new JScrollPane(textArea);
                JScrollBar scrollBar = new JScrollBar();//new JScrollBar(SwingConstants.HORIZONTAL);
                scrollBar.setModel(scrollPane.getHorizontalScrollBar().getModel());
                panel.add(textArea);
                panel.add(scrollPane);

                JPanel internal = new JPanel();
                for(int i = 0; i < 20; ++i) {
                    internal.add(new JLabel("TEXT"));
                }
                scrollPane.setViewportView(internal);
                scrollPane.setPreferredSize(new Dimension(100, 100));
                panel.add(scrollBar);
                pane.add(panel);
                frame.pack();
                frame.setLocationRelativeTo(null);

                frame.setVisible(true);
            }
        });
    }
}
于 2012-07-27T11:09:27.067 に答える