Java小程序滚动条

时间:2011-05-01 18:48:31

标签: java applet

[感谢您的回答。这给你http://www.youtube.com/watch?v=Vo0Cazxj_yc] 这可能也应该是一个非常简单的问题,但我找不到解决方案。

我有一个java applet,我想要一个垂直滚动条,这样我就可以将数千个按钮加载到applet中,并使用滚动条查看applet rightnow it looks like this上的按钮。

按钮用于选择项目。如果按下按钮,则选择该项目。

当我加载按钮时,它们全部显示在一个屏幕上,挤压在一起以适应屏幕的宽度和高度(~1000px,~1000px)。下面的代码是我程序的一部分。请评论。

    JFrame frame = new JFrame();
    NameClassifier nameClassifier = new NameClassifier();
    JScrollPane scrollPane = new JScrollPane(nameClassifier);
     scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    frame.add(scrollPane);
    frame.getContentPane().add(nameClassifier);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
    System.out.println("exiting");

3 个答案:

答案 0 :(得分:1)

我想你想使用Wrap Layout

答案 1 :(得分:1)

import java.awt.*;
import javax.swing.*;

class ManyButtons {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame();
                NameClassifier nameClassifier = new NameClassifier();
                JScrollPane scrollPane = new JScrollPane(nameClassifier);
                scrollPane.setVerticalScrollBarPolicy(
                    ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
                frame.add(scrollPane);
                // nameClassifier has already been added to the scroll pane.
                //frame.getContentPane().add(nameClassifier);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.pack();
                frame.setVisible(true);
                System.out.println("exiting");
            }
        });
    }
}

class NameClassifier extends JPanel {

    NameClassifier() {
        super(new GridLayout(0,10,2,2));
        for (int ii=1; ii<=1000; ii++) {
            add(new JButton("Button " + ii));
        }
    }
}

答案 2 :(得分:0)

不要直接向框架添加任何内容,所以

frame.add(scrollPane);

错了。

将内容添加到内容窗格。大概

scrollPane.add(nameClassifier);
frame.getContentPane().add(scrollPane);
顺便说一下,这是一个非常漂亮的设计。 :)