JScrollPane
在我的 Java 应用程序中使用时有一个小问题。
我有一个JScrollPane
包含一个JPanel
. 这JPanel
是使用可以是任何宽度的按钮(垂直排序)动态更新的。自动将JPanel
其宽度调整为JButton
内部最大的组件。
现在,当垂直滚动条出现时,它占用了 my 右侧的一些空间JPanel
,这导致最大的按钮不会完全出现。除了显示整个按钮之外,我不想使用水平滚动条。
有没有办法JPanel
在出现滚动条时调整我的大小,以便它很好地出现在我的按钮旁边?或者有没有其他方法可以让滚动条出现在我的旁边JPanel
?
提前致谢!
编辑:这是我的问题的演示。当您将窗口大小调整为较小的高度时,右侧的一小部分按钮会被覆盖。
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import java.awt.GridLayout;
/**
* @author Dylan Kiss
*/
public class Demo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
JFrame myFrame = new JFrame("Demo");
JPanel sideBar = new JPanel();
JPanel centerPanel = new JPanel();
centerPanel.add(new JLabel("This is the center panel."));
JPanel buttonContainer = new JPanel();
JButton myButton = null;
for (int i = 0; i < 20; i++) {
buttonContainer.setLayout(new GridLayout(20, 1, 0, 0));
myButton = new JButton("This is my button nr. " + i);
buttonContainer.add(myButton);
}
sideBar.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane(buttonContainer);
sideBar.add(scrollPane);
myFrame.getContentPane().add(sideBar, BorderLayout.WEST);
myFrame.getContentPane().add(centerPanel, BorderLayout.CENTER);
myFrame.setLocationByPlatform(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.pack();
myFrame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}