17

サイズと位置が定義された JPanel が必要です。JPanel 内に、一定数の要素 (ボタン) を水平方向に挿入しました。私の JPanel には幅が定義されているため、多くのボタンを追加すると、それが表示されませんでした。この場合、この JPanel のスクロールバーが必要です。しかし、この JPanel は、JFrame 内の特定の位置にある特定のサイズでなければなりません。JPanel のスクロールバーは、その下に水平に配置されています。誰かが私を助けることができますか?私は成功せずにそれを試しました!

4

3 に答える 3

20

JScrollPane を使用し、preferredSize を指定したサイズに強制します (または、scrollPane コンテナー LayoutManager を null に設定し、スクロールペインで setBounds() を呼び出します)。スクロールバーのポリシーも設定します。その小さなサンプルを次に示します。

import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class Test {

    public static void main(String... args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        for (int i = 0; i < 10; i++) {
            panel.add(new JButton("Hello-" + i));
        }
        JScrollPane scrollPane = new JScrollPane(panel);
        scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        scrollPane.setBounds(50, 30, 300, 50);
        JPanel contentPane = new JPanel(null);
        contentPane.setPreferredSize(new Dimension(500, 400));
        contentPane.add(scrollPane);
        frame.setContentPane(contentPane);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }
}
于 2012-04-27T07:40:32.053 に答える
6

すべてのボタンをパネルに追加します。次に、このパネルをスクロールペインに追加します。

panel.add(button1);
panel.add(button2);
panel.add(button3);
.
.
.
panel.add(buttonn);

パネルにボタンを追加したら、パネルをスクロールペインに追加します。

JScrollPane panelPane = new JScrollPane(panel);

そして、このパネルをフレームに追加します。

于 2012-04-27T07:34:01.717 に答える
4

考えられる解決策は次のとおりです。

また

  • 決定にスクロールするため、PointまたはRectangle方法が存在するscrollRectToVisible場合myPanel.scrollRectToVisible(myButton.getBounds());
于 2012-04-27T07:47:16.213 に答える