[感谢您的回答。这给你http://www.youtube.com/watch?v=Vo0Cazxj_yc] 这可能也应该是一个非常简单的问题,但我找不到解决方案。
我有一个java applet,我想要一个垂直滚动条,这样我就可以将数千个按钮加载到applet中,并使用滚动条查看applet 上的按钮。
按钮用于选择项目。如果按下按钮,则选择该项目。
当我加载按钮时,它们全部显示在一个屏幕上,挤压在一起以适应屏幕的宽度和高度(~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");
答案 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);
顺便说一下,这是一个非常漂亮的设计。 :)