Keine Transparenten JTextComponents möglich mit Nimbus L&F?

Fu3L

Top Contributor
Hallo,

ich erstelle ein Programm, das ein transparentes JTextArea enthalten soll, da dieses den gleichen Hintergrund, wie der Rest des Fensters haben soll (gekacheltes Tile).

Der Konstruktor des JPanels sieht so aus:

[Java]

this.setBackground(Color.BLACK)

txt = new JTextArea(9, 66);
txt.setText("lala\nlala\nlala\nlala\nlala\nlal");

txt.setOpaque(false);
txt.setEditable(false);

scroll = new JScrollPane(txt);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setBorder(BorderFactory.createEmptyBorder());
scroll.setOpaque(false);
scroll.getViewport().setOpaque(false);
this.add(scroll);[/code]

Ich habe mit dem Nimbus L&F so keine Transparenz des Fensters zustande gebracht, auch mit einer Stunde suchen hier im Forum. Erst als ich wieder normal das Ocean L&F eingestellt habe, wurde das JTextArea transparent.
Ich würde aber ungern auf das Nimbus L&F verzichten, da es mir sehr gefällt und das ganze auch noch für den Kusntunterricht ist, also kommt es auf die Ästhetik an ;)

Ich verwende diese Zeil, um das L&F umzustellen:

Java:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
 

CroniD

Aktives Mitglied
Erstmal hier etwas ausführliches zur Materie: Java Nimbus LAF with transparent text fields - Stack Overflow

Dort wird u.a. vorgeschlagen:
Java:
txt.setBorder(BorderFactory.createEmptyBorder());
txt.setOpaque(false);
txt.setBackground(new Color(0,0,0,0));
Die letzte Zeile erzeugt ein Color Objekt mit dem Alphawert 0, also quasi die "Farbe Transparent". An dieser Lösung ist nachteilige, dass scheinbar der Rahmen des ScrollPanes dennoch gezeichnet wird. Jedenfalls als ich es ausprobiert habe.

Also, Nimbus hat so seine Schwierigkeiten, was die Opaque Propertie angeht. Eine Idee wäre, da du das alles schön in einem Konstruktor hast, einfach die gleiche Background Propertie wie die vom Panel zu nehmen. Sprich:
Java:
txt.setBackground(this.getBackground());
Aber nicht die Rahmen vergessen dabei. ;)
 

Fu3L

Top Contributor
Danke, zumindest der erste Vorschlag funktioniert bei mir.. Ich werde mir wohl was einfallen lassen, damit die Begrenzung zum Rest des Fensters passt. Da ist es allerdings besser, die Umrandung des Textfeldes zu belassen, da sonst der erste Buchstabe einer Zeile auf dem Border der Scrollpane gezeichnet wird.

Der zweite Vorschlag funktioniert leider nicht, da ich ja ein Hintergrundbild verwende...

Wäre es theoretisch möglich eine eigene Borderklasse abzuleiten, die wirklich respektiert, dass sie "leer" sein soll?^^ (Als Hobby Programmierer hab ich mich nie damit befasst, vorgegebene Klassen zu manipulieren^^)
 

CroniD

Aktives Mitglied
Wäre es theoretisch möglich eine eigene Borderklasse abzuleiten, die wirklich respektiert, dass sie "leer" sein soll?^^ (Als Hobby Programmierer hab ich mich nie damit befasst, vorgegebene Klassen zu manipulieren^^)
Dafür gibt es doch den EmptyBorder. Den sollte man auch immer dann verwenden, wenn man Abstände einfügen will. Über die BorderFactory bekommt man ganz leicht einen.
Code:
BorderFactory.createEmptyBorder(top, left, bottom, right)

Ode rmeinst du was anderes?

BTW: Wenn du dein Programm "stylisch" aussehen lassen willst, dann würde ich dir raten nicht auf Nimbus zu setzen, da Nimbus in vielen Dingen einfach mehr frustet. Schau dir mal z.B. Substance https://substance.dev.java.net/ an. ;) Oder such dir eines der zahlreichen anderen freien LAFs aus. eine Übersicht findet sich auf Home - javootoo.com Recht nett könnte auch noch Synthetica - Java Look And Feel (dort gibt es sogar direkt für das Arbeiten mit TextAreas in der FAQ was Synthetica - Java Look And Feel) sein, aber das ist mit unter nicht kostenlos.

Na ja, ansonsten, wenn du wirklich ganz individuell was zaubern möchtest, dann gebe es da noch den Weg sich ein ganz eigenes LAF zu basteln. Das kann man entweder von selbst von hand machen (sehr schwierig) oder es etwas leichter haben mit einigen wenigen Einschränkungen über ein Tool wie EaSynth Look And Feel Designer - Java Look And Feel IDE oder Home
 
Zuletzt bearbeitet:

Fu3L

Top Contributor
Dafür gibt es doch den EmptyBorder. Den sollte man auch immer dann verwenden, wenn man Abstände einfügen will. Über die BorderFactory bekommt man ganz leicht einen.
Code:
BorderFactory.createEmptyBorder(top, left, bottom, right)

Ode rmeinst du was anderes?

Ich meinte das Problem, dass du selbst angesprochen hast: Dass der Rahmen um die ScrollPane auf einmal sichtbar wird, wenn man das TextArea transparent macht, obwohl ich ja eigentlich den Rahmen der ScrollPane unsichtbar mache. (Darüber ist ja auch auf der Stack Overflow Seite geschrieben worden)
Java:
scroll.setBorder(BorderFactory.createEmptyBorder());
scroll.setOpaque(false);
scroll.getViewport().setOpaque(false);


Was die anderen Look and Feels angeht, werde ich sie mir mal ansehen :)
 

CroniD

Aktives Mitglied
Achso, okay. ^^

Im Prinzip könntest du auch eine eigene UI Klasse für deine Scrollpane bauen.

Dafür einfach von der entsprechenden XXXScrollPaneUI Klasse des LAFs (XXX=LafName) ableiten und deine Anpassungen vornehmen. Für Nimbus heißt die entsprechende Klasse javax.swing.plaf.synth.SynthScrollPaneUI.

Am besten schaust du erstmal direkt in die entsprechende XXXScrollPaneUI Klasse rein und liest dir die diversen Kommentare durch, ist manchmal recht hilfreich. Nun Änderungen vornehmen und dann musst du deine fertige UI Klasse nur noch in die richtige Komponente reinpacken mit "setUI(MyScrollPaneUI)".

Wenn deine UI Klasse allerdings weitestgehend LAF unabhängig sein soll, dann erbst du besser von der javax.swing.plaf.basic.BasicScrollPaneUI, (alle LAF bezogen UI Klassen erben übrigens immer von den BasicUI Klassen) aber dafür hast du evtl. einige grafische Bugs je LAF.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
V JavaFX Bild leer und keine Fehlermeldung AWT, Swing, JavaFX & SWT 21
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
L Java FX Keine Anzeige Im Tableview AWT, Swing, JavaFX & SWT 4
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
K Swing Keine Reaktion auf Tastatureingaben bei mehreren Buttons??? AWT, Swing, JavaFX & SWT 4
gamebreiti auf usereingabe warten mit GUI(nur Labels, Buttons etc. keine Texteingaben) AWT, Swing, JavaFX & SWT 3
P Swing JTable keine Markierung nach Button klick AWT, Swing, JavaFX & SWT 0
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
N JavaFX Keine Dynamic AWT, Swing, JavaFX & SWT 2
W Swing Ausführung einer .jar zeigt keine Reaktion AWT, Swing, JavaFX & SWT 4
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
N Swing JTable mit Sorter: Keine Sortierung bei Klick in Header AWT, Swing, JavaFX & SWT 3
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
A trotz setSize keine breite AWT, Swing, JavaFX & SWT 4
Q JTable - Keine Spaltennamen AWT, Swing, JavaFX & SWT 3
H Swing Keine Rückmeldung (freeze) bei setVisible(false) oder dispose() AWT, Swing, JavaFX & SWT 4
B JEditorPane lädt keine Schriftfarbe in HTML AWT, Swing, JavaFX & SWT 2
dzim TableView - keine Aktualisierung geänderter Items AWT, Swing, JavaFX & SWT 5
E Keine Ausgabe auf Console und List AWT, Swing, JavaFX & SWT 13
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
N Swing Netbeans 7.1 keine DesktopApplication mehr möglich ? AWT, Swing, JavaFX & SWT 15
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
C Swing JFrame nimmt keine anderen Elemente auf AWT, Swing, JavaFX & SWT 13
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
A Swing JTable benutzt keine Checkbox für Booleans AWT, Swing, JavaFX & SWT 9
M Swing Focus für Buttons deaktiviert --> keine Reaktion mehr auf Tastendrücke AWT, Swing, JavaFX & SWT 5
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7
C MouseMotionListener fired keine Events mehr wenn in Button AWT, Swing, JavaFX & SWT 2
D Fenster will keine Ausgabe geben>:( AWT, Swing, JavaFX & SWT 3
K Applet erkennt keine Frameverkleinerung AWT, Swing, JavaFX & SWT 5
O keine ähnliche Farben durch Random in Java AWT, Swing, JavaFX & SWT 21
N JFileChooser - Keine Funtkion AWT, Swing, JavaFX & SWT 13
P Kennt awt.list keine Tastatureingabe? AWT, Swing, JavaFX & SWT 3
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
H Swing JScrollPane bekommt keine ScrollBars AWT, Swing, JavaFX & SWT 5
bluerob Nach RowSorter -> Keine Tabellenüberschreibung möglich AWT, Swing, JavaFX & SWT 7
V JTextField nimmt keine Eingaben an, nach nachträglichem setVisible des JWindows AWT, Swing, JavaFX & SWT 4
aze JTextField:Keine Markierung AWT, Swing, JavaFX & SWT 6
D Swing keine Tabellen Zeilen ohne Focus AWT, Swing, JavaFX & SWT 7
J Swing JTable, eigener TableCellRenderer Keine Anzeige in den Zellen AWT, Swing, JavaFX & SWT 8
C keine weiteren Events während Drag&Drop Operation möglich? AWT, Swing, JavaFX & SWT 5
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
earlgrey_tea AWT KeyListener bekommt keine Signale AWT, Swing, JavaFX & SWT 3
B LayoutManager mischen keine gute Idee? AWT, Swing, JavaFX & SWT 9
O Swing es können keine neuen Labels hinzufügt werden während der Timer läuft AWT, Swing, JavaFX & SWT 14
B JScrollbarPane zeigt keine scrollbars AWT, Swing, JavaFX & SWT 2
I Panel scheint keine Größe zu haben AWT, Swing, JavaFX & SWT 3
aze GridLayout: Keine automatische Ausdehnung AWT, Swing, JavaFX & SWT 2
1 JFrame bleibt leer, keine Ahnung warum AWT, Swing, JavaFX & SWT 7
M SWT keine Scrollbar bei widgets.List und GridLayout AWT, Swing, JavaFX & SWT 2
P SWT Tree - Keine Selection zulassen AWT, Swing, JavaFX & SWT 4
T SWT Keine Anzeige der Widgets nach Comboauswahl AWT, Swing, JavaFX & SWT 2
1 GeneralPath-Kreise werden keine Kreise AWT, Swing, JavaFX & SWT 2
hdi Swing setPreferredSize zeigt keine Änderung AWT, Swing, JavaFX & SWT 2
R AWT [Anfänger] keine atives Aussehen von Buttons AWT, Swing, JavaFX & SWT 4
S Seltsames Problem - manchmal enthaelt die ActionMap eine JTextArea keine Actions. AWT, Swing, JavaFX & SWT 4
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
B Keine Änderungen an JLabel durch Array möglich AWT, Swing, JavaFX & SWT 12
C Frame repaint hat keine Wirkung AWT, Swing, JavaFX & SWT 6
L Swing JPanel sendet keine KeyEvents AWT, Swing, JavaFX & SWT 22
J Swing - ich sehe keine Linie, andere schon AWT, Swing, JavaFX & SWT 6
S JDialog gibt keine Nachrichten ueber sein Schliessen..? AWT, Swing, JavaFX & SWT 3
C JTextArea zeigt keine Scrollbalken AWT, Swing, JavaFX & SWT 18
B Heavyweight Popup lässt keine MouseEvents durch AWT, Swing, JavaFX & SWT 2
K JDialog zeigt keine Komponenten wenn es modal ist AWT, Swing, JavaFX & SWT 2
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
V JTabbedPane - keine "Focus"-Box auf selektiertem T AWT, Swing, JavaFX & SWT 2
G JTable zeigt keine Spaltenheader AWT, Swing, JavaFX & SWT 7
L JDialog-kann keine Größe setzen AWT, Swing, JavaFX & SWT 4
F Thread macht keine Pause AWT, Swing, JavaFX & SWT 22
W Threads und trotzdem keine Nebenläufigkeit AWT, Swing, JavaFX & SWT 13
G Keine Anzeige des Balkens AWT, Swing, JavaFX & SWT 3
F JScrollPane mit JPanel drinne zeigt keine Scroll-Leisten AWT, Swing, JavaFX & SWT 7
K keine Zeichenfläche sichtbar AWT, Swing, JavaFX & SWT 2
J ActionListener nimmt keine for()-Schleife? AWT, Swing, JavaFX & SWT 4
M JDialog + JFrame + keine Java Tasse AWT, Swing, JavaFX & SWT 9
G keine ScaledInstance von BufferedImage? AWT, Swing, JavaFX & SWT 6
Z habe code, habe fehler, habe keine lösung AWT, Swing, JavaFX & SWT 7
C Jar Datei ist ausführbar aber zeigt keine icon's an AWT, Swing, JavaFX & SWT 18
S JList gibt nach Sortierung mit Collections keine Anzahl mehr AWT, Swing, JavaFX & SWT 3
N Trotz richtiger ListSelectionMode kann ich keine Zeile sel? AWT, Swing, JavaFX & SWT 4
technolion FileDialog/keine Multi-Selektion vs. JFileCHooser/kein LaF AWT, Swing, JavaFX & SWT 2
S getSize gibt keine Größe wieder AWT, Swing, JavaFX & SWT 4
K Keine SWT-Komponenten-Gruppe in Palette des Visual Editor AWT, Swing, JavaFX & SWT 2
M Keine Buttons oder sonstige Objekte in JFrame unter Linux AWT, Swing, JavaFX & SWT 4
W Vom JPanel bekomme ich keine Events AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben