JEditorPane: Hintergrundbild fixieren

aruba-x-x

Erfahrenes Mitglied
Hallo,

ich habe einen Chat, bei dem die Textanzeige mittels eines JEditorPane erfolgt.
Fuktioniert soweit auch alles wunderbar, mein Problem ist jetzt, dass das Hintergrundbild, das im JEditorPane angezeigt wird immer weiterscrollt, wenn entsprechend viel Text geschrieben wurde.

Ich habe versucht das Problem mit den Attributen style="background-attachment:fixed" und bgproperties="fixed" im Body-Tag zu beheben, hat aber beides nichts geholfen.

Vielleicht kennt ja jemand noch eine andere Möglichkeit wie ich das Hintergrundbild fixieren kann.
 
Hallo!

Schau mal hier:
Code:
 package de.tutorials;
 
 import java.awt.AlphaComposite;
 import java.awt.Dimension;
 import java.awt.Font;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Rectangle;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 
 import javax.imageio.ImageIO;
 import javax.swing.JFrame;
 import javax.swing.JScrollPane;
 import javax.swing.JTextPane;
 import javax.swing.JViewport;
 
 public class BackgroundImageJTextPaneExample extends JFrame {
 
 	BufferedImage backgroundImage;
 
 	public BackgroundImageJTextPaneExample() {
 		super("BackgroundImageJTextPaneExample");
 		setDefaultCloseOperation(EXIT_ON_CLOSE);
 
 		try {
 			backgroundImage = ImageIO.read(new File("c:/Sonnenuntergang.jpg"));
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
 
 		final JScrollPane scrollPane = new JScrollPane();
 		scrollPane.setViewport(new JViewport());
 		scrollPane.setViewportView(new JTextPane() {
 			AlphaComposite composite = AlphaComposite.getInstance(
 					AlphaComposite.SRC_OVER, 0.3F);
 
 			JViewport port = scrollPane.getViewport();
 			
 			{
 				setFont(getFont().deriveFont(Font.BOLD, 16.F));
 			}
 
 			protected void paintComponent(Graphics gra) {
 				super.paintComponent(gra);
 				Graphics2D g = (Graphics2D) gra;
 				g.setComposite(composite);
 				Rectangle visibleRectangle = port.getViewRect();
 				g.drawImage(backgroundImage, visibleRectangle.x,
 		    		    visibleRectangle.y, null);
 				scrollPane.repaint();
 			}
 		});
 
 		scrollPane.setPreferredSize(new Dimension(640, 480));
 		add(scrollPane);
 
 		pack();
 		setVisible(true);
 	}
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		new BackgroundImageJTextPaneExample();
 	}
 
 }

Gruß Tom
 
Zurück