我创建了一个带有JScrollPane的JPanel,并尝试使用它滚动浏览随机生成的颜色。随机生成的彩色方块的大小为64px×64px,覆盖100×100个方格的区域。很自然地,我希望由于该区域远远超过JPanel的区域,滚动条将会执行。但是从下面的屏幕截图中,滚动条无法正常工作,没有滚动条标签。
(扩展JPanel)
private void createCanvasWindow()
{
this.setLayout(new BorderLayout());
_scrollPane = new JScrollPane(this);
_scrollPane.setViewportView(this);
_scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
_scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
_scrollPane.setBounds(10, 10, WIDTH, HEIGHT);
_gen = new JButton("Gen");
_gen.addActionListener(this);
_gen.setBounds(16 + WIDTH, 10 + HEIGHT, 80, 32);
_gen.setVisible(true);
_frame.getContentPane().add(_gen);
_frame.getContentPane().add(_scrollPane, BorderLayout.CENTER);
}
答案 0 :(得分:2)
_scrollPane = new JScrollPane(this);
您添加到滚动窗格的任何组件都将控制滚动条。添加到滚动窗格的组件的首选大小大于滚动窗格的大小时,将显示滚动条。无论如何"这个"组件需要覆盖getPreferredSize()
方法以返回组件的大小,因为我可以告诉您正在进行自定义绘制,每个组件都负责确定自己的首选大小。