Moin,
ich möchte ein Hintergrundbild in einer JScrollPane haben. Wie man Hintergrundbilder einfügt habe ich an verschiedenen Stellen bereits gesehen. Aber sie werden nie in einer JScrollPane verwendet.
Bisheriger Code:
Ziel des Ganzen:
Eine Karte der Umgebung soll im Hintergrund liegen und anzeigen wo sich einzelne Elemente befinden. Die Elemente bewegen sich. Die Elemente werden vermutlich kleine Bilder werden, welche ich dann als weitere Panel anzeige. Aber da bin ich noch nicht. Erstmal brauche ich das Bild im Hintergrund zum Scrollen.
Ich hoffe man versteht was ich will und jemand kann mir helfen.
Danke im Voraus.
Gruß
ich möchte ein Hintergrundbild in einer JScrollPane haben. Wie man Hintergrundbilder einfügt habe ich an verschiedenen Stellen bereits gesehen. Aber sie werden nie in einer JScrollPane verwendet.
Bisheriger Code:
Java:
import java.awt.Graphics;
import java.awt.GridBagLayout;
import java.awt.Image;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.JScrollPane;
import java.awt.GridBagConstraints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Visualisierung extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JScrollPane jScrollPane = null;
private JPanel backgroundPanel = null;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Visualisierung thisClass = new Visualisierung();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public Visualisierung() {
super();
initialize();
}
private void initialize() {
this.setSize(300, 200);
this.setTitle("JFrame");
this.setContentPane(getJContentPane());
}
private JPanel getJContentPane() {
if (jContentPane == null) {
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.fill = GridBagConstraints.BOTH;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.gridx = 0;
jContentPane = new JPanel();
jContentPane.setLayout(new GridBagLayout());
jContentPane.add(getJScrollPane(), gridBagConstraints);
}
return jContentPane;
}
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane.setViewportView(getBackgroundPanel());
}
return jScrollPane;
}
private JPanel getBackgroundPanel() {
if (backgroundPanel == null) {
backgroundPanel = new BackGroundPanel();
backgroundPanel.setLayout(new GridBagLayout());
}
return backgroundPanel;
}
class BackGroundPanel extends JPanel
{
String pfad ="test.jpg";
private Image createImage()
{
BufferedImage hintergrund = null;
try {
hintergrund = ImageIO.read(new File(pfad));
} catch (IOException e) {
e.printStackTrace();
}
return hintergrund;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(createImage(), 0, 0, this);
}
}
}
Ziel des Ganzen:
Eine Karte der Umgebung soll im Hintergrund liegen und anzeigen wo sich einzelne Elemente befinden. Die Elemente bewegen sich. Die Elemente werden vermutlich kleine Bilder werden, welche ich dann als weitere Panel anzeige. Aber da bin ich noch nicht. Erstmal brauche ich das Bild im Hintergrund zum Scrollen.
Ich hoffe man versteht was ich will und jemand kann mir helfen.
Danke im Voraus.
Gruß