Делать образ прокрутки в Jframe ContentPane

Я пытаюсь отобразить большое изображение внутри контента jframe. Я хотел бы сделать изображение или ContentPane прокручиваться, поскольку изображение большой. Я пытался сделать это, используя jscrollpane и добавить его в condentPane, но она не работала. Сделал несколько поисков решения, но в конечном итоге не удалось найти один. Может кто-нибудь поможет мне? Мой код ниже

FinalEnvironment.java

package environment;

import java.awt.*;
import java.net.URL;

import javax.swing.*;

public class FinalEnvironment{

public FinalEnvironment(){

    Image Eastlake;
    URL EastlakeURL = null;

    EastlakeURL = FinalEnvironment.class.getResource("/image1/eastlake_night.png");
    Eastlake = Toolkit.getDefaultToolkit().getImage(EastlakeURL);

    JFrame frame = new JFrame("UniCat World");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 600);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);

    JMenuBar yellowMenuBar = new JMenuBar();
    Map map = new Map(800, 550, Eastlake);
    yellowMenuBar.setOpaque(true);
    yellowMenuBar.setBackground(Color.YELLOW);
    yellowMenuBar.setPreferredSize(new Dimension(800, 50));
    frame.setJMenuBar(yellowMenuBar);
    JScrollPane scroller = new JScrollPane(map);
    scroller.setAutoscrolls(true);
    scroller.setPreferredSize(new Dimension(800, 550));
    frame.getContentPane().add(scroller, BorderLayout.CENTER);


    frame.setSize(800, 600);
    frame.setVisible(true);
}

public static void main(String[] args){
    FinalEnvironment fe = new FinalEnvironment();
}
}

Вот моя map.java

package environment;

import java.awt.*;

import javax.swing.*;


public class Map extends JPanel{

    private int width;
    private int height;
    private Image img;

    public Map(int width, int height, Image img){

        this.width = width;
        this.height = height;
        this.img = img;
    }

    protected void  paintComponent(Graphics g)
    {
        super.paintComponents(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(img,0,0,2624,1696,null);
    }

}

, наконец, я хотел бы разместить JButtons на вершину этого изображения. Должен ли я вызвать прямоугольник и поместить его на верхнее изображение в CondentPane, который затем я использую точку для позиционирования моих кнопок или я должен сразу же использовать изображение или сам компонент, чтобы сделать это? Мне нужна кнопка, чтобы уметь синхронизировать с изображением, когда он прокручивается вместо статического на контентах.

Спасибо

12
задан Bill the Lizard 28 September 2011 в 12:44
поделиться