我正在制作一个实用程序来为我的游戏定义地图中的立足点,我正在JScrollPane内部的JPanel中显示地图的预览。我希望能够在地图大于JScrollPane时滚动。我该怎么做?
这是一张图片
z http://screensnapr.com/e/gKkYSw.png
地图的图像适合滚动窗格内部,但图像实际上更大,所以我们无法看到整个地图。
一些代码:
JPanel类,它将图像保存在scrollPane
中public class MapDisplay extends JPanel {
public MapDisplay() {
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponents(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(new Color(0xDFDFDF));
g2d.fillRect(0, 0, 2000, 2000);
if (mapinfo != null) {
if (mapinfo.img != null) {
g2d.drawImage(mapinfo.img, 0, 0, null);
}
}
repaint();
}
}
scrollPane的声明
final JScrollPane scrollPane_1 = new JScrollPane(mapDisplay);
scrollPane_1.setBounds(10, 11, 989, 553);
getContentPane().add(scrollPane_1);
add(scrollPane_1);
答案 0 :(得分:3)
MapDisplay
必须'告诉'JScrollPane
它想要多大。您可以通过实施getPreferredSize
的{{1}}方法来实现此目的。
MapDisplay
此外,不从public Dimension getPreferredSize() {
return new Dimension(widthOfMap, heightOfMap);
}
方法中调用repaint()
,因为这会导致无限循环。