Java JScrollpane与另一个JPanel中的JPanel
我想在另一个Java JScrollpane与另一个JPanel中的JPanel,java,swing,jpanel,jscrollpane,Java,Swing,Jpanel,Jscrollpane,我想在另一个JPanel中添加一个JScrollpane和JPanel在我的基本JFrame JPanel outer = new JPanel(new GridBagLayout()); JPanel drawPanel = new JPanel(new GridBagLayout()); drawPanel.add(new DrawingBoard(500,500)); drawPanel.setBackground(Color.WHITE); JScrollPane scrollPane
JPanel
中添加一个JScrollpane
和JPanel
在我的基本JFrame
JPanel outer = new JPanel(new GridBagLayout());
JPanel drawPanel = new JPanel(new GridBagLayout());
drawPanel.add(new DrawingBoard(500,500));
drawPanel.setBackground(Color.WHITE);
JScrollPane scrollPane = new JScrollPane(drawPanel);
outer.add(scrollPane);
this.add(outer, BorderLayout.CENTER);
如果我将带有JPanel
的JScrollpane
直接添加到JFrame
,则JScrollpane
起作用。但是现在,当我将帧的大小减小到500像素以下时,JPanel
会变小,如第二张图片所示
如何使
JScrollPane
工作?GridBagLayout
正是对它的期望。当可用空间太小,无法满足构件的首选尺寸时,将使用构件的最小尺寸
取而代之的是,考虑使用<代码>边界布局< /代码>和<代码> EvyTimeEng/<代码>,以生成滚动窗格
周围的空白空间。 您还可以使用GridBagConstraints
查看更多详细信息最简单的修复方法是在调用
pack()
后调用JFrame.setMinimiumSize(JFrame.getSize())
。但为了更快地获得更好的帮助,请发布一个(最简单的完整且可验证的示例)。很可能是外部面板的布局对您造成了影响。尝试使用BorderLayout和EmptyByOrder…如果此
是JFrame:不要直接向框架添加组件。改为使用JFrame.setContentPane(outer)
。@Thomas自Java 5以来,JFrame#添加重定向以自动获取内容窗格,不过老实说,通过getContentPane通常问题较少,因为并非所有容器方法都是以这种方式连接的;)