Swing JLabel und LayoutManager

bene2808

Aktives Mitglied
Tag Leute,

bin mal wieder auf ein Problem beim Layouten von Swing gestoßen:

Ich will ein JLabel mit langem Text, Zeilenumbruch und Blocksatz erstellen.

Hat mit HTML soweit schon alles geklappt, aber ich muss immer noch setPreferredSize aufrufen, damit überhaupt ein mehrzeiliges Textfeld entsteht.

Wäre mir aber lieber, wenn das JLabel seine Breite an die Breite des Behälters (oder eben an die Breite wie vom zugehörigen LayoutManager berechnet) anpasst, und die Höhe automatisch genauso gewählt wird, dass noch der ganze Text hineinpasst.


Danke für jeden Vorschlag oder Denkfehlerkorrektur :) .
 

kaoZ

Top Contributor
Warum nicht JTextArea ? Die eigentlich genau für sowas gedacht ist .
 
Zuletzt bearbeitet:

bene2808

Aktives Mitglied
Kenne mich nicht so aus mit JTextArea :rtfm:.

Hier mein Ansatz:

Code:
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TextExample{
	public static void main(String[] args){
		JFrame frame = new JFrame("TextExample");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(new GridLayout(2, 1, 6, 6));
		JButton button = new JButton("Irgendein Button");
		JTextArea label = new JTextArea("Das ist ein so langer Text, dass er ohne Zeilenumbruch einfach nicht auskommt. Außerdem will er unbedingt im Blocksatz stehen, damit er nicht so hingerotzt wirkt. Dabei soll er seine Breite an die vorgegebene anpassen und seine Höhe so ändern, dass gerade noch der ganze Text zu sehen ist.");
		label.setLineWrap(true);
		label.setWrapStyleWord(true);
		//Restliche Initialisierung
		frame.add(button);
		frame.add(label);
		frame.pack();
		frame.setVisible(true);
	}
}

Was jetzt eben noch fehlt, ist der Blocksatz. Was ich gut finde, ist dass die Breite sich an die vorgegebene Breite, nämlich die des Buttons anpasst, jetzt müsste nur noch die Höhe so verändert werden, dass der ganze Text zu sehen ist.

Außerdem möchte ich natürlich dem Benutzer den Umstand verheimlichen, dass es sich um eine JTextArea und kein JLabel handelt, also kein weißer Hintergrund, keine Möglichkeit der Textselektion, etc.
 

kaoZ

Top Contributor
Dazu musst du entweder die Größe deines Containers anpassen, oder du wählt den eigentlichen standalisierten Weg und fügst deine TextArea in einen JScollPane ein,

und fügst diese dann deinem Container hinzu.

Java:
JTextArea area = new JTextArea();
area.setLineWrap(true);

JScollPane scollPane = new JScrollPane(area);

container.add(scrollPane);

zudem solltest du anstatt Magic Strings zu verwenden , eine Statische Methode , z.B in einer Utilityklasse Schreiben welche einen Text aus einer Textdatei einließt, und ein Array mit den Zeilen
dieser Datei zurückliefert, und diesen dann Zeilenweise deiner JTextArea hinzfügt.

Das könntest du z.B so machen :

Java:
public class FileUtil {
	
	public FileUtil() {}
	
	public static Object[] readFile(String filename){
		BufferedReader reader = null;
		File file = new File(ParamUtil.checkStringParam(filename));
		String line = "";
		ArrayList<String> list = new ArrayList<>();
		
		try {
			reader = new BufferedReader(new FileReader(file));
			
			while((line = reader.readLine()) != null){
				list.add(line);
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			StreamUtil.closeStream(reader);
		}
		
		return list.toArray();
	}

}

Die statische Methode der Utilityklasse ParamUtil führt hier lediglich Parameterprüfungen durch !

Der aufruf könnte dann so aussehen :

eine Methode um Text aus einem Array der JTextArea hinzuzufügen :

Java:
private String addTextToArea(JTextArea area, Object...strings){
		
		StringBuilder builder = new StringBuilder();
		
		for (int i = 0; i < strings.length; i++) {
			builder.append(strings[i]);
		}
		
		return builder.toString();
	}

und der dazu gehörige Aufruf in der Klasse :

Java:
area.setText(addTextToArea(area, FileUtil.readFile("Text/Welcome.txt") ));  
// hier könnte man für den Pfad auch eine Konstante definieren

Zwecks des Blocksatzen bin ich mir nicht sicher , schau dir aber mal die Klasse JEditorPane an .
 
Zuletzt bearbeitet:

bene2808

Aktives Mitglied
Vielen Dank schonma für die ausführliche Antwort :D

Also... Das mit der JScrollPane wäre natürlich eine Möglichkeit, würde ich aber lieber vermeiden. Das Problem ist, dass nur ein Infotext (aber ein sehr wichtiger!) angezeigt wird. Wenn der gescrollt werden muss, liest ihn eh keiner. Er ist gerade so lang, dass er umgebrochen werden muss und leider zu kurz, um sich für eine ScrollPane zu lohnen.

Zu deinem Magic-String Kommentar: War ja bloß ein Beispiel, was ich geschrieben habe. Aber du hast ins Schwarze getroffen: In meinem richtigen Code habichs auch falsch gemacht :). Schande über mich.

Die JEditorPane habe ich verzweifelt via Internet vollständig zu verstehen versucht ???:L. Grundsätzlich ist die Funktionsweise ja klar, aber wie ich dann erreichen kann, dass mit Blocksatz die Breite an die Container-Breite angepasst wird und die Höhe dementsprechend gewählt???

Bin total überfragt :bahnhof:
 

kaoZ

Top Contributor
Poste mir mal den Text der dargestellt werden soll, zur not auch per pm, ich schau mal was ich machen kann um es vernünftig darzustellen :)

PS: Muss dein Container (JFrame) eine bestimmte größe haben ? falls ja gibt mir mal hier ein´paar infos
 

bene2808

Aktives Mitglied
Hängt eigentlich weniger vom Text ab... Ich hab jetzt schon mehrere Stellen, wo ich das brauche und es werden weitere folgen :noe:.

Und das Fenster muss eigtl. keine feste Größe haben. Hab sie zufällig bei mir festlegen müssen, weil sonst der Titel nicht mehr zu erkennen gewesen ware :). Also so gesagt, ist in diesem einen Fall die Fenstergröße festgelegt und das Textfeld soll sich an die Breite anpassen und die Höhe selbst wählen.
 

kaoZ

Top Contributor
Schau dir doch einfach mal die verschienden layoutmanager an , durch verschachteln von z.B mehren JPanel mit unterschiedlichen Layouts lassen sich viele unterschiedliche layouts erzielen , man muss sich nur etwas einarbeiten ;)
 

bene2808

Aktives Mitglied
Hm... Dachte schon, dass es darauf hinausläuft :) ...

Tja, dann mach ich mir mal Gedanken :rtfm:. Interessanterweise habe ich eigtl. die Hälfte schon. Wenn ich auf meinem JLabel setPreferredSize(new Dimension(0, 80)) aufrufe, wird die Breite an die Container-Breite angepasst. Nur die Höhe wird nicht automatisch gewählt, sondern natürlich auf 80 gesetzt.
Vllt. ließe es sich irgendwie über zwei Aufrufe erreichen. Erst Breite auf 0 setzen, sodass das JLabel sich an die Containerbreite anpasst. Dann iwie ermitteln wieviele Zeilen benötigt werden und erneut setPreferredSize aufrufen...

Aber wenn noch wer ne Idee hat... :D

Wenn ich die Lösung find, post ich sie.
 

kaoZ

Top Contributor
Wenn ich auf meinem JLabel setPreferredSize(new Dimension(0, 80)) aufrufe, wird die Breite an die Container-Breite angepasst. Nur die Höhe wird nicht automatisch gewählt, sondern natürlich auf 80 gesetzt.

Das liegt am standardmäßig vom JPanel verwendeten Layoutmanager, das wäre in diesem Fall das
Code:
Flowlayout()

kannst du mal ein Bild von dem posten oder ne Skizze was genau du vorhast ? vielleicht kann ich dir da schnell was zusammencoden ;)
 

bene2808

Aktives Mitglied
OK, meine ganze Beschreibung könnte für Verwirrung gesorgt haben :). Ich hab's zwar schon mehrmals erwähnt, war mir aber selbst nicht so ganz im Klaren, dass das Problem sich sehr einfach vollständig darauf reduzieren lässt:

1.Breite des JLabels setzen (wobei die Breite eben nicht absolut ist, sondern sich erst durch die Komposition der anderen Komponenten ergibt)
2.Nötige Höhe fürs Anzeigen des ganzen Texts ermitteln und dem JLabel zuweisen

Punkt.

Dieses Problem haben auch einige andere, konkrete Lösung habe ich aber immer noch nicht finden können :(.

Mir ist wie gesagt selbst erst aufgefallen, worum es bei meinem Problem eigtl geht :oops: und wollte das mitteilen :D .
 

bene2808

Aktives Mitglied
Hier noch einmal mein Code (wie ich das GridBagLayout benutze etc.):

Code:
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class TextExample{
	public static void main(String[] args){
		JFrame frame = new JFrame();
		frame.setTitle("Ein Titel");
		frame.setResizable(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//Hier würde ich lieber die Breite angeben und die Höhe berechnen. Leider finde ich keine Methode zum Ermitteln der tatsächlichen Höhe eines JLabels mit Zeilenumbruch, wenn ich nicht zuerst das JFrame sichtbar mache
		frame.setPreferredSize(new Dimension(300, 300));
		JLabel label1 = new JLabel("<html><p align = 'justify'>Das ist ein so langer Text, dass er ohne Zeilenumbruch einfach nicht auskommt. Außerdem will er unbedingt im Blocksatz stehen, damit er nicht so hingerotzt wirkt. Dabei soll er seine Breite an die vorgegebene anpassen und seine Höhe so ändern, dass gerade noch der ganze Text zu sehen ist.</p></html>");
		JLabel label2 = new JLabel("Eine Beschriftung:");
		JTextField textfield1 = new JTextField("Eine Eingabe");
		JLabel label3 = new JLabel("Noch 'ne Beschriftung");
		JTextField textfield2 = new JTextField("Noch 'ne Eingabe");
		JCheckBox checkbox = new JCheckBox("Eine Checkbox", true);
		JButton button1 = new JButton("Ein Button");
		JButton button2 = new JButton("Noch ein Button");
		Container content = frame.getContentPane();
		Insets insets = new Insets(3, 3, 3, 3);
		frame.setLayout(new GridBagLayout());
		content.add(label1, new GridBagConstraints(0, 0, 2, 1, 1, 1, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(label2, new GridBagConstraints(0, 1, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(textfield1, new GridBagConstraints(1, 1, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(label3, new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(textfield2, new GridBagConstraints(1, 2, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(checkbox, new GridBagConstraints(0, 3, 2, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(button1, new GridBagConstraints(0, 4, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		content.add(button2, new GridBagConstraints(1, 4, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, insets, 0, 0));
		frame.pack();
		frame.setVisible(true);
	}
}
 

kaoZ

Top Contributor
Ich hab keine Ahnung warum du auf das JTextField beharrst....

Hier mal ein Beispiel mit einer JTextArea die in ein JFrame mit BorderLayout geadded wird, mal abgesehen davon das ich jetzt keine lust hatte noch eine JScrollPane hinzuzufügen



Wie du sehen kannst nimmt diese die volle Höhe und auch Volle Breite des BorderLayouts ein, ohne das ich irgendwelche größen speziell setzen musste:

Java:
public class Foo extends JFrame {

	
	JTextArea area;
	
	public Foo() {
		setSize(400,200);
		
		area = new JTextArea();
		
		this.add(BorderLayout.CENTER, area);
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new Foo();
	}
}

Oder versteh ich grade nur dein Problem nicht richtig ? ;)

//Hier würde ich lieber die Breite angeben und die Höhe berechnen. Leider finde ich keine Methode zum Ermitteln der tatsächlichen Höhe eines JLabels mit Zeilenumbruch, wenn ich nicht zuerst das JFrame sichtbar mache

1. muss dazu sein JLabel oder auch Jpanel wissen wie hoch dein Frame ist
2. macht man den JFrame auch erst nach hinzufügen aller Komponenten sichtbar ;)

Du musst mit getSize() oder getPreferredSize zuvor die Höhe und Breite deines Fensters setzen und dieses dann dementsprechend an dein JlLabel übergeben (setPreferredSize() ), woher soll sonst auch dein Label wissen wie Groß dein JFrame ist ?!

Ausserdem du arbeitest doch mit einem GridBagLayout warum setzt du dann nicht einfach die gridwidht() dementsprechend ?

Ausserdem musst du nicht jedes mal ein neues GridBagConstraints Objekt erstellen sondern das vorhandene einfach überschreiben ...

[EDIT]
Dein Code ist btw. grausam formatiert , ich hab den Kommentar nur durch zufall entdeckt :)
[/EDIT]

Das hier liefert genau das gleiche ergebnis wie der obrige Code mit BorderLayout

Java:
public class Foo extends JFrame {

	
	JTextArea area;
	
	GridBagConstraints g = new GridBagConstraints();
	
	public Foo() {
		setSize(400,200);
		setLayout(new GridBagLayout());
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLocationRelativeTo(null);
		
		area = new JTextArea();
		area.setColumns(10);
		
		g.gridx		 = 0;
		g.gridy		 = 0;
		g.weightx	 = 1;
		g.weighty	 = 1;
		g.fill = GridBagConstraints.BOTH;
		add(area, g);
		
		setVisible(true);
	}

	public static void main(String[] args) {
		new Foo();
	}

Hier noch schnell ein Beispiel mit JLabel :



Java:
package tests;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;

public class Foo extends JFrame {

	
	JTextArea area;
	JLabel label;
	
	GridBagConstraints g = new GridBagConstraints();
	
	public Foo() {
		setSize(400,200);
		setLayout(new GridBagLayout());
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLocationRelativeTo(null);
		
		label = new JLabel("I'm the JLabel of the hell !");
		
		area = new JTextArea();
		area.setColumns(10);
		area.setBorder(BorderFactory.createEtchedBorder());
		
		g.gridx		 = 0;
		g.gridy		 = 0;
		g.gridwidth	 = 4;
		g.gridheight = 1;
		g.weightx	 = 1;
		g.weighty	 = 1;
		g.fill = GridBagConstraints.BOTH;
		add(area, g);
		
		g.gridx		 = 2;
		g.gridy		 = 1;
		g.gridwidth	 = 2;
		g.weightx	 = 0;
		g.weighty	 = 0;
		g.anchor	 = GridBagConstraints.CENTER;
		g.fill		 = GridBagConstraints.NONE;
		g.insets = new Insets(20, 20, 20, 20);
		add(label, g);
		
		setVisible(true);
	}

	public static void main(String[] args) {
		new Foo();
	}
}
 
Zuletzt bearbeitet:

bene2808

Aktives Mitglied
Also...

genau genommen beharre ich auf das JLabel :). Und zwar, weil dieses HTML kann, und so meine Bedingung, den Blocksatz erfüllt. Wenn JTextArea das auch kann, und ich iwie die JTextArea grafisch an ein JLabel anpassen kann (kein weißer Hintergrund, kein Lese-Schreib-Cursor, etc.), dann würde ich die natürlich auch nehmen ;).

Jetzt übertrag ich mal mein Anliegen auf deine JTextArea... Ich will, dass die JTextArea automatisch Zeilenumbrüche (und zwar nicht mitten im Wort) macht. Ich will dann ersteinmal nur die Breite des Fensters setzen können. Die JTextArea hat dann die Möglichkeit, zu errechnen, wie hoch sie sein muss, um mit der gegebenen Breite den ganzen Text darzustellen (und das ohne JScrollPane etc.). Konnte die benötigte Höhe der TextArea ermittelt werden, wird die Höhe des Fensters dementsprechend angepasst.

Soweit ich weiß, ist das bei der JTextArea sehr viel leichter zu realisieren. Sie bietet Methoden zum Ermitteln der Zeilenanzahl, die multipliziert mit der Zeilenhöhe die gesamte Höhe der Komponente ergibt, wenn alles angezeigt werden können soll. Beim JLabel ist das aber nicht so einfach, vmtl., weil es sich ja nicht auf HTML festlegt und so keine Methoden zur Errechnung der optimalen Höhe bietet.

Also lange, lange Rede :)... Ich benutze gerne jede Komponente, die
a)Automatischen Zeilenumbruch mit ganzen Wörtern unterstützt,
b)Im Blocksatz steht und
c)Eine Möglichkeit bietet, die Höhe in Abhängigkeit von der Breite so zu berechnen, dass mit diesen Werten der Text genau hineinpasst (nicht größer, nicht kleiner)

PS: Zu deiner Wiederverwendung von GridBagConstraints: How to Use GridBagLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
As you might have guessed from the above example, it is possible to reuse the same GridBagConstraints instance for multiple components, even if the components have different constraints. However, it is recommended that you do not reuse GridBagConstraints, as this can very easily lead to you introducing subtle bugs if you forget to reset the fields for each new instance.
Kann natürlich jeder machen, wie er will, aber mir gefällt es so besser :D.
 

kaoZ

Top Contributor
Warum dann eigentlich nicht eine JEditorPane ? wenn du so auf die Formatierung in Blocksatz und HTML bestehst ;)

Nochmal zur Wiederverwendung der Constraints Objekte, sicher wenn ich z.B eine Methode anlege die mir ein JPanel zurückliefert, welches ebenfalls ein GridBagLayout besitzt, erstelle ich dafür auch ein lokal gültiges Constraints Objekt, unabhängig von dem ggf. Global verwendetem nutze ich dann intern ( innerhalb der Methode ) auch nur das lokale. :)
 

bene2808

Aktives Mitglied
Natürlich hab ich auch nix gegen JEditorPane. Deren Funktionsumfang ist sehr beeindruckend :D.

Will dich ja nicht nerven ;), aber es bleibt immer noch ein Problem:

1.Breite setzen
2.JEditorPane berechnet die nötigen Zeilenumbrüche neu
3.Neue Zeilenanzahl wird ermittelt und die Höhe der JEditorPane auf ermittelte Zeilenanzahl * Zeilenhöhe gesetzt

Nur: Wie komme ich jetzt an die Zeilenanzahl?!?. Ich will die Größe der Text-Komponente eben so anpassen, dass der Text genau hineinpasst.


Also, ich hoffe wirklich, hier niemandes Geduld überzustrapazieren. :D
 

kaoZ

Top Contributor
Das Problem ist , wenn du HTML verwendest kannst du die Zeilen nicht einfach so Zählen..

ansonsten könntest du an jeder stelle an der ein Zeilenumbruch stattfindet einen counter hochzählen der dann festhält wieviel Zeilen dein Text hat und dementsprechend agiert , das ist allerdings auch wieder abhängig von Schriftgröße / Schriftart... Zeichenabstand usw usw....,außerdem da du aber ja vorher nicht weißt wann und wo der Zeilenumbruch stattfindet gestaltet sich das dann als schwierig.

Zudem müsstest du dann neu validieren damit die JTextArea / JLabel / oder auch die JEditorPane ebend ihre Größe ändern kann, das nächste Problem wäre dann die Größe des Elternelementes / containers, setzt du da eine Feste Größe oder verwendest du pack(); eines JFrames?

sonst könnte es sein das die Komponente vielleicht größer wird als ihr Container , und da du ja nicht Scrollen möchtest quasi die hälfte deines Textes verdeckt wird.

Du siehst schon das das kein einfaches und ggf. nicht einfach so umsetzbares vorhaben ist ? ;)

[TIPP]
JTextArea hat z.B die Methode
Code:
getLineCount()
die dir direkt die Zeilenanzahl liefert.

Einfach mal ein wenig in der API und Klassendokumentation umschauen ob was brauchbares dabei ist ;)
[/TIPP]
 
Zuletzt bearbeitet:

bene2808

Aktives Mitglied
Also, das Fenster sollte wie das JLabel (JEditorPane, etc.) auch in der Höhe frei veränderbar sein, und die Breite will ich am Anfang setzen. Letztendlich ändert sich die Höhe des Fensters mit der Höhe der Textkomponente.

Davon, dass das Ganze schwierig umzusetzen ist, bin ich inzwischen überzeugt :D. Mir gefiele das Layout so eben am besten. Ist halt einfach eine layout-technische Spitzfindigkeit ;). Vielleicht gibt es ja auch einen ganz anderen Weg...
 

bene2808

Aktives Mitglied
Naja, wenn's so kompliziert ist, dann lass ichs erst mal weg.

Jetzt was Einfacheres: Ich will eine Konsole anzeigen. Gibts da irgendwas vorgefertigtes? Am besten wäre kein ganzes Fenster sondern nur eine Komponente, die als Konsole fungieren kann.
Wenn es so etwas nicht gibt, wie stelle ich mir das selbst zusammen? Vor einer eigenen Komponente mit eigener Grafik schrecke ich mittlerweilen zurück, weil die Erstellung einer solchen ziemlich aufwendig ist, wenn man's "richtig" machen will. Wie schuster ich mir das dann aus bestehenden Komponenten am besten zusammen?
 

kaoZ

Top Contributor
Naja was heiß kompliziert, du musst dir vor Augen halten das du entweder nur über setSize(); , setPreferredSize(); oder setBounds(); die Größe einer komponente setzen kannst, wenn du die logische Reihenfolge nun betrachtest hast du spätestens an dieser stelle auch schon dein Problem, du möchtest das der Inhalt anhand der Höhe festgelegt wird, die könnte man jetzt naiv angehen und sagen, man berechnet die Höhe der Schrift +- einen geringen Puffer und multipliziert ihn mit der anzahl der Zeilen.

Soweit so gut, nun zu den Problemen :

Angenommen du hast eine Datei in der dein Text steht, dieser wird nun beim starten deiner Anwendung eingelesen der JTextArea per Schleife und append(); hinzugefügt, dann weißt du ja bevor du den Text hinzugefügt hast noch garnicht wo genau der Zeilenumbruch stattfindet und wieviele Zeilen es werden, demnach auch nicht welche Höhe die verwendete Schrift in pixel ist und kannst also jetzt auch noch garnicht berechnen wie hoch die JTextArea ggf. sein müsste.

Alles in allem doch ein Ziemlicher Aufwand, also entweder du nutzt ein BorderLayout() und schaust das du dein JFrame dementsprechend Groß gestaltest das der Inhalt komplett dargestellt wird, oder du verwendest halt Scrollbalken insofern
der Text länger sein sollte und nicht in deine Darstellung passt.

Zu deiner anderen Frage, du möchtest über eine auführbare .jar die Windows Konsole öffnen oder was genau meinst du ?
 

bene2808

Aktives Mitglied
Ist Tatsache kompliziert, ich weiß :D. Aber du hast jetzt wirklich genau umrissen, was mein Problem ist. Hab's wie gesagt erstma übergangen, würde mich aber freuen, wenn ich das iwie iwann auch noch lösen könnte.

Zu der Konsole: Nein ich meine eigtl nicht unbedingt die Windows-Konsole, sondern eine unabhängige Konsolenkomponente, die ich z. B. mit anderen Komponenten in ein Fenster packen kann.
Habe das jetzt für's Erste mit einer JTextArea gemacht, weiß nicht ob das die schönste Lösung ist :bahnhof:.

Danke für die Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JLabel mit Layoutmanager AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
C Swing Übergabe von String an JLabel AWT, Swing, JavaFX & SWT 9
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
raeuchertofu Text von JTextfield und JLabel ändern AWT, Swing, JavaFX & SWT 2
D JLabel übereinanderlegen AWT, Swing, JavaFX & SWT 5
E JLabel kopieren AWT, Swing, JavaFX & SWT 31
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
S Swing JLabel Text mit der Zeit ändern AWT, Swing, JavaFX & SWT 1
E JLabel AWT, Swing, JavaFX & SWT 1
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
I JLabel neue Zeile AWT, Swing, JavaFX & SWT 4
L JLabel ist verzerrt/größer als eingestellt AWT, Swing, JavaFX & SWT 15
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
E Wie kann ich ein JLabel auf größe der schriftlänge setzten? AWT, Swing, JavaFX & SWT 2
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
D zwei JLabel stapeln in einem JPanel AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L Kalendar als JLabel einfügen AWT, Swing, JavaFX & SWT 3
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
it_is_all jLabel.setText -> Char in Str: NullpointerException AWT, Swing, JavaFX & SWT 1
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
P Aktualisierung von jLabel in jFrames AWT, Swing, JavaFX & SWT 8
DaCrazyJavaExpert Swing JLabel Klickanimation AWT, Swing, JavaFX & SWT 4
A Swing JLabel als Parameter übergeben AWT, Swing, JavaFX & SWT 9
M JLabel ausrichten AWT, Swing, JavaFX & SWT 2
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
T JLabel Textinhalt von Oben anzeigen AWT, Swing, JavaFX & SWT 1
N JLabel in JTabbedPane verschieben AWT, Swing, JavaFX & SWT 2
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
Thallius Swing "..." beim JLabel verhindern? AWT, Swing, JavaFX & SWT 3
OlafHD JLabel im JFrame Zentrieren AWT, Swing, JavaFX & SWT 2
T Event Handling JLabel als eigener Button AWT, Swing, JavaFX & SWT 7
T JLabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
KilledByCheese Swing 2D JLabel Array Maze zeichnen AWT, Swing, JavaFX & SWT 2
F Abgeleitetes JLabel AWT, Swing, JavaFX & SWT 16
D Swing keine JLabel-Aktualisierung bei "externem" Aufruf durch Helferklasse AWT, Swing, JavaFX & SWT 10
S jLabel HTML Formatierung AWT, Swing, JavaFX & SWT 2
J Statisches JLabel adden AWT, Swing, JavaFX & SWT 4
J JLabel Visible setzen in KeyListener AWT, Swing, JavaFX & SWT 13
T JLabel in die Mitte(JLabel.CENTER geht nicht) AWT, Swing, JavaFX & SWT 12
2 JLabel - setText ändert den Text nicht AWT, Swing, JavaFX & SWT 4
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta JLabel anzuzeigenden Text zentrieren AWT, Swing, JavaFX & SWT 9
K Swing unterschied JTextField und JLabel AWT, Swing, JavaFX & SWT 7
F Swing JLabel in JFrame anpassen AWT, Swing, JavaFX & SWT 20
E JLabel aus Runnable ändern AWT, Swing, JavaFX & SWT 2
Z AWT JLabel setzt kein neuen Text AWT, Swing, JavaFX & SWT 6
D JLabel bei Aufruf neue Zeile AWT, Swing, JavaFX & SWT 5
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
F ListCellRenderer mit JLabel und MouseListener AWT, Swing, JavaFX & SWT 4
F Swing JLabel wird nicht sofort Angezeigt AWT, Swing, JavaFX & SWT 3
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
S JLabel-Text in Methode setzen? AWT, Swing, JavaFX & SWT 2
GreyFox JLabel in laufender Anwendung erzeugen AWT, Swing, JavaFX & SWT 6
H Position eines JLabel in einem JPanel AWT, Swing, JavaFX & SWT 2
Z Auf ein JLabel drauf malen? AWT, Swing, JavaFX & SWT 1
S JLabel in den Vordergrund rücken AWT, Swing, JavaFX & SWT 1
A JLabel hochzählen lassen. AWT, Swing, JavaFX & SWT 6
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
I Swing JLabel Bild für 1sec anzeigen lassen AWT, Swing, JavaFX & SWT 13
S JLabel anordnen AWT, Swing, JavaFX & SWT 2
J ungewollt-automatische Größenänderung von JLabel AWT, Swing, JavaFX & SWT 5
H AWT Fenster- und JLabel-Größe automatisch anpassen AWT, Swing, JavaFX & SWT 2
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
O Statusleiste mit JLabel aktualisieren AWT, Swing, JavaFX & SWT 5
G jLabel aus anderem Fenster ändern AWT, Swing, JavaFX & SWT 7
T JLabel Nullpunkt verschieben AWT, Swing, JavaFX & SWT 6
F Swing JPanel mit JLabel spinnt? AWT, Swing, JavaFX & SWT 2
M Massenweise JLabel ? oder ? AWT, Swing, JavaFX & SWT 3
J JLabel während einer methode aktualisieren AWT, Swing, JavaFX & SWT 6
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
V JLabel bzw. GUI aus externen Thread ansteuern AWT, Swing, JavaFX & SWT 3
G JLabel verdeckt AWT, Swing, JavaFX & SWT 12
A JLabel zeichendicke einstellen AWT, Swing, JavaFX & SWT 3
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
S JLabel zeigt ImageIcon nicht AWT, Swing, JavaFX & SWT 13
S jLabel / jText beim starten ausblenden AWT, Swing, JavaFX & SWT 2
A Array von JLabel mit Grafiken anzeigen AWT, Swing, JavaFX & SWT 3
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M JLabel über JButtons zeichnen AWT, Swing, JavaFX & SWT 4
T Kreis in Jlabel darstellen. AWT, Swing, JavaFX & SWT 13
SexyPenny90 JLabel liegt unter meiner Turtle AWT, Swing, JavaFX & SWT 5
V JLabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben