我有一个JPanel(myPanel),里面有很多按钮(这个面板包含在另一个包含其他组件的面板中)。我会将这个JPanel(myPanel)插入到滚动中,以更好地控制按钮。
这是我代码的一部分:
JPanel firstPanel = new JPanel(null);
......
......
JPanel myPanel = new JPanel(null);
myPanel.setBounds(0, position+22, 400, 500);
for (int i=0; i<size; i++) {
JButton button = new JButton(myList.get(i));
if (counter%4 == 0) {
button.setBounds(270, 0+(4*i), 90, 18);
} else if (counter%3 == 0) {
button.setBounds(180, 4+(4*i), 90, 18);
} else if (counter%2 == 0) {
button.setBounds(90, 8+(4*i), 90, 18);
} else {
button.setBounds(0, 12+(4*i), 90, 18);
}
myPanel.add(bottone);
}
......
......
firstPanel.add(myPanel);
那么,我该怎么把它插入卷轴呢?
当JPanel使用null
布局时,您的问题似乎是询问如何将JPanel添加到JScrollPane,答案很简单:
- 首先不要使用
null
布局。由于JScrollPane机制需要使用null布局,因此使用null布局几乎可以保证JScrollPane所包含的组件不会适当滚动 - 要么这样,要么你将被要求创建一个扩展JPanel并实现Scrollable接口的类,这将需要更多的工作,而且是完全不必要的工作
- 相反,你真的被迫学习如何使用,然后使用适当的布局管理器组合,让你的JPanel保持和显示它们的组件。请注意,您可以嵌套JPanel,每个JPanel都使用自己的布局,从而轻松创建复杂但易于维护的GUI。有关这方面的更多信息,请查看布局管理器教程
- 将JPanel添加到JScrollPane中很容易。将JPanel传递到JScrollPane的构造函数
JScrollPane scrollpane = new JScrollPane(myPanel);
中,或者通过setViewportView(myPanel)
将JPanell传递到JScrollPane视口视图中。以下是JScrollPane教程,以及一般的Swing教程