Hey,
Ich würde innerhalb meines Programmes gerne folgendes Verhalten eines JTextPanes erzeugen:
Es wird ein Hintergrundbild gesetzt und der Benutzer kann dann nur noch innerhalb (also sozusagen auf) dem Bild schreiben. Wenn die Grenze überschritten wird, soll automatisch ein Umbruch erzeugt werden. Das ganze ist vergleichbar zu der Folienerstellung bei Power Point oder ähnlichem.
Ich scheitere nun daran, die Größe des Panes zu erzwingen und bin mir auch nicht ganz sicher wie ich es anstellen soll. Hier mal ein kleines ausführbares Beispiel, wie es sich im Moment bei mir verhält:
In diesem Beispiel ist es zwar kein Hintergrundbild sondern einfach ein grünes Rechteck, dass die entsprechenden Grenzen zeigen soll, aber es war dann einfacher den Code hier direkt ausführbar zu posten.
Nun stört mich am jetztigen Verhalten folgendes:
Nach dem Vergrößeren des Frames, kann man über die Grenzen des grünen Rechtecks hinaus schreiben.
Ohne das Fenster zu vergrößern kann man über das Rechteck hinaus "Tabben" (wobei das nicht so schlimm zu sein scheint, da bei Nachfolgender Texteingabe der Text in die nächste Zeile gesetzt wird).
Wenn man davon ausgeht, dass kein grünes Rechteck, sondern ein Hintergrundbild mit gleicher Größe gesetzt ist, sollten entsprechend sofort Scrollbars auftauchen, sobald das Hintergrundbild nicht mehr vollständig sichtbar ist.
Ich hoffe es ist halbwegs klar geworden, was ich gerne hätte und ich hoffe ich bin mit meinem Ansatz (dem eigenen JTextPane) hier nicht komplett auf dem Holzweg.
Vielen Dank schonmal
Grüße,
sMau
Ich würde innerhalb meines Programmes gerne folgendes Verhalten eines JTextPanes erzeugen:
Es wird ein Hintergrundbild gesetzt und der Benutzer kann dann nur noch innerhalb (also sozusagen auf) dem Bild schreiben. Wenn die Grenze überschritten wird, soll automatisch ein Umbruch erzeugt werden. Das ganze ist vergleichbar zu der Folienerstellung bei Power Point oder ähnlichem.
Ich scheitere nun daran, die Größe des Panes zu erzwingen und bin mir auch nicht ganz sicher wie ich es anstellen soll. Hier mal ein kleines ausführbares Beispiel, wie es sich im Moment bei mir verhält:
Java:
package creator;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
public class TextPaneThemeslide extends JTextPane {
public TextPaneThemeslide() {
super();
setOpaque(false);
// this is needed if using Nimbus L&F - see [url=http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6687960]Bug ID: 6687960 Background of component invisible with Nimbus[/url]
setBackground(new Color(0,0,0,0));
setEditable(true);
}
@Override
protected void paintComponent(Graphics g) {
g.clearRect(0, 0, getWidth(), getHeight());
g.setColor(Color.GREEN);
g.drawRect(0, 0, 800, 600);
g.setColor(Color.BLACK);
super.paintComponent(g);
}
public static void main(String args[]) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
JScrollPane jScrollPane1 = new JScrollPane();
TextPaneThemeslide textPaneThemeslide = new TextPaneThemeslide();
Dimension size = new Dimension(800, 600);
textPaneThemeslide.setSize(size);
textPaneThemeslide.setPreferredSize(size);
textPaneThemeslide.setMaximumSize(size);
textPaneThemeslide.setMinimumSize(size);
textPaneThemeslide.setContentType("text/html");
jScrollPane1.setViewportView(textPaneThemeslide);
frame.add(jScrollPane1);
frame.setSize(800, 600);
frame.setVisible(true);
}
}
In diesem Beispiel ist es zwar kein Hintergrundbild sondern einfach ein grünes Rechteck, dass die entsprechenden Grenzen zeigen soll, aber es war dann einfacher den Code hier direkt ausführbar zu posten.
Nun stört mich am jetztigen Verhalten folgendes:
Nach dem Vergrößeren des Frames, kann man über die Grenzen des grünen Rechtecks hinaus schreiben.
Ohne das Fenster zu vergrößern kann man über das Rechteck hinaus "Tabben" (wobei das nicht so schlimm zu sein scheint, da bei Nachfolgender Texteingabe der Text in die nächste Zeile gesetzt wird).
Wenn man davon ausgeht, dass kein grünes Rechteck, sondern ein Hintergrundbild mit gleicher Größe gesetzt ist, sollten entsprechend sofort Scrollbars auftauchen, sobald das Hintergrundbild nicht mehr vollständig sichtbar ist.
Ich hoffe es ist halbwegs klar geworden, was ich gerne hätte und ich hoffe ich bin mit meinem Ansatz (dem eigenen JTextPane) hier nicht komplett auf dem Holzweg.
Vielen Dank schonmal
Grüße,
sMau