2

ゲームのマップに足場を定義するユーティリティを作成しており、JScrollPane内のJPanel内にマップのプレビューを表示しています。マップがJScrollPaneよりも大きい場合にスクロールできるようにしたいと思います。どうすればいいですか?

これが写真です

z

大きいバージョン

地図の画像はスクロールペインの内側に収まりますが、実際には画像が大きいため、地図全体を見ることができません。

いくつかのコード:

scrollPane内に画像を保持するJPanelクラス

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);
4

1 に答える 1

3

どれだけ大きくなりたいかを「MapDisplay伝える」必要があります。のメソッドをJScrollPane実装することでこれを行うことができます。getPreferredSizeMapDisplay

public Dimension getPreferredSize() {
    return new Dimension(widthOfMap, heightOfMap);
}

さらに、メソッドの内部から呼び出さないでください。無限ループが発生します。repaint()paintComponent()

于 2012-09-22T20:44:43.837 に答える