Portal > Foren > Java > Desktop-Applikationen und Grafik > Hintergrundbild in einer JTextArea
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 15.09.2005, 18:22 Nach oben    #1
VipViper2000
Gast
 
Beiträge: n/a
Standard Hintergrundbild in einer JTextArea

Hi Leute!

Wollte in einem Programm von mir bei der JTextArea eine Art Hintergrundbild einfügen - so als Gag. Jetzt weiss ich aber nicht wie das geht, ich hatte es mit getGraphics von der JTextArea versucht:

PHP-Code:
logFenster.getGraphics.drawImage(marwin,x,y,logFenster); 
( logFenster = JTextArea, marwin ist das Bild, ist auch korrekt geladen ).

Weiss jemand, wie ich das mache?
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 20:46 Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.134
Standard

Selbstverständlich.

Ich nenne aber nur eine Möglichkeit, obwohl es diverse Möglichkeiten gibt. Na ja, here we go...

Leite JTextArea ab und überschreibe paintComponent() und zeichne dein Bild.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 21:05 Nach oben    #3
VipViper2000
Gast
 
Beiträge: n/a
Standard

Joa, das würde natürlich gehen. Ich werds auf jeden Fall mal probieren. Kannst du vielleicht ein paar andere Möglichkeiten andeuten, falls es nicht zu viel Arbeit macht?
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 21:18 Nach oben    #4
Benutzer
 
Benutzerbild von mr1st
 
Registriert seit: 08.02.2005
Ort: Wien
Beiträge: 86
Standard

Du könntest ja von JTextArea erben und die paint Methode überschreiben. Voraussetzung für meine Variante ist, dass die JTextArea durchsichtig ist und somit die paint-Methode von JTextArea keinen Hintergrund malt.

Code:
...
setOpaque(false);
...
public void paint(Graphics g)
{ g.drawImage(background,x,y,w,h,this);
  super.paint(g);
}
MfG
__________________
Kosmetik Hobby
mr1st ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 21:27 Nach oben    #5
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.134
Standard

*autsch*

@mr1st: Das ist im Endeffekt das selbe, was ich gesagt habe, nur das deines AWT-style ist... in Swing überschreibt man paintComponent, nicht paint...


Zum Thema: Implementation eines eigenen UI-Delegate (davon würde ich abraten, weil z.B. mein LookAndFeel einige Funktionen hinzufügt) oder du könntest das JViewport einer JScrollPane ableiten und dort die paintComponent (oder war's paintChildren?) überschreiben und anschliessend der JScrollPane, die die JTextArea beinhaltet, übergeben.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 21:33 Nach oben    #6
VipViper2000
Gast
 
Beiträge: n/a
Standard

Hmm, komplizierter als ich dachte. Hab das eben mal mit ableiten von JTextArea probiert, bekomme aber jetzt jede Menge Exceptions, wenn in einer TestKlasse versuche mein MyJTextArea zu erzeugen. Mache ich da was grundlegendes falsch? Ich muss dazu sagen, das ich die Sache mit dem ImageObserver nocht nicht ganz verstanden habe:

PHP-Code:
public class MyJTextArea extends JTextArea {
    
    
Image marwin;
    
File marwinPic;
    
    
MyJTextArea(){
        
super();
        
marwinPic = new File(this.getClass().getResource("res/marwin.jpg").toString());
        try{
            
marwin ImageIO.read(marwinPic);
        }catch(
IOException e){            
        }
    }

    public 
void paintComponent(Graphics g){
        
this.getGraphics().drawImage(marwin,this.getWidth()-marwin.getWidth(this),this.getY(),null);
    } 
Okay, also ich bekomme die Exceptions nicht mehr, wenn ich bei der Position einfach mal 0,0 mache. Wollte es aber Rechts oben in der Ecke haben, deswegen die Berechnung. Aber zeichnen tut er das pic immer noch nicht...

Okay, weiss warum er es nicht anzeigt. Es gibt Probleme mit der Art, wie ich das Bild lade. Hab einfach mal

PHP-Code:
marwinPic = new File("res/marwin.jpg"); 
gemacht und jetzt lädt er es. Das Problem wird aber jetzt sein, dass er mir das so dann nicht aus dem Jar-Archiv lädt...
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 21:52 Nach oben    #7
Benutzer
 
Benutzerbild von mr1st
 
Registriert seit: 08.02.2005
Ort: Wien
Beiträge: 86
Standard

@pago
Als ich auf "Antworten" gedrückt hatte, war Deins noch nicht da, weil ich ziemlich lange zum Antwort schreiben brauchte (weil ich ja vorher ausprobiert habe).
__________________
Kosmetik Hobby
mr1st ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 21:56 Nach oben    #8
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.134
Standard

Du kannst dir das "getGraphics" sparen und stattdessen mit "g" arbeiten.
Und ja, du fängst bei (0,0) mit dem Zeichnen an.
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.09.2005, 22:03 Nach oben    #9
VipViper2000
Gast
 
Beiträge: n/a
Standard

Okay, also jetzt wird das Bild zwar angezeigt, aber ich kann nichts mehr in die Area schreiben... Und auch der Hintergrund ist da, wo das Bild halt nicht ist grau. :rolleyes:

EDIT: So, mit dem Aufruf super.paintComponent(g); und der Option this.setOpaque(false); gehts jetzt. Einzig der Hintergrund der Restlichen TextArea ist immer noch grau.

EDIT: So, habs jetzt hinbekommen und danke nochmal für eure Hilfe. Könnte mir jemand vielleicht mal kurz erklären, wieso genau ich den Aufruf in meiner überschriebenen painComponent brauche?
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.09.2005, 00:39 Nach oben    #10
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Hast du noch Probleme mit dem laden des Images als Resource?

Code:
marwin = Toolkit.getDefaultToolkit().createImage(this.getClass().getResource("res/marwin.jpg"));
Das sollte dir helfen.
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.09.2005, 00:48 Nach oben    #11
VipViper2000
Gast
 
Beiträge: n/a
Standard

@Sparrow

Nee, geht wunderbar. Warum setzt du zusätzlich das Toolkit ein?
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.09.2005, 00:57 Nach oben    #12
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Also ich lad meine Bilder immer so.
Zum einen brauch ich dann kein File-Objekt erstellen, und zum anderen ist es problemlos möglich die Daten auch aus einem jar zu laden.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.09.2005, 12:16 Nach oben    #13
VipViper2000
Gast
 
Beiträge: n/a
Standard

Stimmt, das mit dem File-Objekt ist natürlich richtig. Gar nicht schlecht. Schaue ich mir für die Zukunft mal von dir ab
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.01.2007, 16:19 Nach oben    #14
Neuer Benutzer
 
Registriert seit: 17.01.2007
Beiträge: 2
Standard

Hallo ...

sitze gerade an dem selben Problem. Hab ein Bild wie oben beschrieben ohne Probleme als Hintergrundbild einstellen können. Doch jetzt hab ich ein anderes Problem:

Wenn in der JTextArea viel Text drin ist und ich runterscrolle, bewegt sich das Hintergrundbild mit ... Wie schaffe ich es das das Hintergrundbild fest in der rechten unteren Ecke der JTextArea verankert wird, unabhängig davon ob ich den Text runter- bzw. raufscrolle?
nebokabnetzar ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 17.01.2007, 17:31 Nach oben    #15
Neuer Benutzer
 
Registriert seit: 17.01.2007
Beiträge: 2
Standard

alles klar, habs!

PHP-Code:
    public void paintComponent(Graphics g){
        
g.drawImage(bild,
                
this.getWidth()-bild.getWidth(null)-10,
                
g.getClipBounds().y+60,
                
this);        
        
super.paintComponent(g);
    } 
nebokabnetzar ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2007, 22:03 Nach oben    #16
Neuer Benutzer
 
Registriert seit: 08.03.2007
Ort: berlin
Beiträge: 4
Standard

Wie würdet ihr das umsetzen, wenn das Hintergrundbild immer in der Mitte des sichtbaren Bereiches bleiben...
...also mitscrollen soll?
Ich kriegs nicht hin.
shrink ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 14.03.2007, 23:43 Nach oben    #17
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.653
Standard

Schau dir mal die beiden Posts deines Vorredners genauer an, da solltest doch genau das drin stehen das du brauchst oder?
__________________
I did it my way - Senseless-Blog
Weihnachtsgeschenk? Schülern helfen - Bodypainting Kalender für 2009
WarrenFaith ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Look and Feel bei JTextArea Robinson Desktop-Applikationen und Grafik 7 04.10.2005 12:07
JTextarea und Scrollen Binary Allgemeine Java-Programmierung 2 07.09.2005 13:21
Text in eine JTextArea oder in einem JTextPane als XML?? Eddi HTML, XML und CSS 8 28.06.2005 19:07
JTextArea, in welcher Zeile befindet sich der Cursor Gottzilla Desktop-Applikationen und Grafik 1 08.04.2005 14:17
JTextArea verschiedene Klassen ghost Allgemeine Java-Programmierung 3 21.10.2004 00:05


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45