Problem mit JPanels

sebbi1234

Grünschnabel
Hallo,

ich möchte in einem JFrame ein Bild als Hintergrundbild verwenden, dass über die gesamte Fläche des Frames angezeigt wird. Des weiteren soll ein TextPane in einem JScrollPane angezeigt werden. Das dann entsprechend "über" dem Hintergrundbild.

Ich hab dafür das folgende Beispiel geschrieben, in dem ich für das ScrollPane und das Hintergrundbild jeweils ein eigenes JPanel verwende und dem JFrame übergebe.

Sobald die windowActivated-Methode aufgerufen wird, werden die Positionen und die Größen der beiden Panels gesetzt und das Bild in das Panel für den Hintergrund geladen.

Mein Problem: Das Hintergrundbild wird nachher überhaupt nicht angezeigt und das ScrollPane mit dem TextPane auch nicht korrekt.

Weiß jemand was ich falsch mach und wie ich das Problem lösen kann?

Gruß und Danke,

Sebastian

Code:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;


public class test extends JFrame implements ComponentListener, WindowListener{

	JScrollPane scrollPane;
	JTextPane textPane;
	JPanel backgroundPanel;
	JPanel panelForScrollPane;
	
	public test() {
		
		setLayout(null);
		
		backgroundPanel = new JPanel();
		
		textPane = new JTextPane();
		scrollPane = new JScrollPane(textPane, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
				JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		panelForScrollPane = new JPanel();
		panelForScrollPane.setLayout(new BorderLayout());
		panelForScrollPane.add(scrollPane);
	
		getContentPane().add(panelForScrollPane);
		getContentPane().add(backgroundPanel);

		addWindowListener(this);		
		setSize(300,300);
		setVisible(true);
	}
	
	public void paint(Graphics g){
		
	}

	public static void main(String[] s){
		new test();
	}

	public void windowActivated(WindowEvent arg0) {

		backgroundPanel.setBounds(0,0,this.getWidth(), this.getHeight());
		
		try {
			backgroundPanel.getGraphics().drawImage(ImageIO.read(new File("picture.bmp")), 0, 0, null);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		panelForScrollPane.setBounds(100,100, this.getWidth() - 150, this.getHeight() - 150);
		

	}

	@Override
	public void windowClosed(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowClosing(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeactivated(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeiconified(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowIconified(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowOpened(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void componentHidden(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void componentMoved(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void componentResized(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void componentShown(ComponentEvent e) {
		// TODO Auto-generated method stub
		
	}


}
 
Hallo,

Java kann keine BMP-Dateien öffnen, sondern nur JPG, GIF oder PNG.

Warum hast du die paint()-Methode überschrieben?

Gruß

Sascha
 
Zurück