Konsole - Kleine Frage

oOJavaNeulingOo

Bekanntes Mitglied
Guten Abend!

In Eclipse ist die Konsole genial. Zeilumbrüche werden als Zeilenumbrüche genommen, STRG+C / STRG+V und so weiter geht alles - Ganz im Gegensatz zu der Windows Konsole. Das nervige, bzw das Problem: Ich habe ein Programm geschrieben, bei dem Formatierung essentiell ist! Also Zeilenumbrüche usw. Zudem benutzt es viel /strg+c/v. Gibt es jetzt irgendwie eine Möglichkeit beim starten meines Programmes so etwas ähnliches wie die Eclipse Konsole hinzukriegen?

MfG
 
Naja, daran habe ich auch schon gedacht, allerdings habe ich erst sehr sehr wenig mit GUI-Programmierung gemacht - Also habe ich da null Erfahrung.

Das größte Problem hierbei ist auch, dass selbst wenn ich es mit GUI mache, der Code-Teil der die vielen Strg+c/v Sachen und Formatierungen braucht ein Plugin ist, und somit wäre es ganz schönes Wirrwar an der GUI per Plugin rummzufummeln.
 
Zuletzt bearbeitet:
Achja, noch was:

Einen einfachen JPanel mit einer JTextArea zu erstellen ist ja einfach - Aber das macht noch lange keine Konsole 🙁! Irgendwie muss ich an die Inputs kommen, mit "enter" abgesendete Strings erst "processen" & "locken" - Also ist es dann doch etwas schwerer 🙁

Wie gesagt, das beste wäre halt sowas wie die Eclipse Konsole :/
 
Okay, habe mal versucht mit dem Input anzufangen - Alleine das geht schon nicht und weist Probleme auf..

Java:
public class Konsole extends JPanel {

	public int H = 400, W = 600;

	private static final long serialVersionUID = -895287237525031191L;
	
	JTextField 	in;
	JTextArea	out;
	JFrame 		frame;
	public Konsole(){
		initFrame();
		initInput();
		initOutput();
		frame.add(this);
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
	
	private void initFrame(){
		frame	= new JFrame("Utils");
		frame.setLocationRelativeTo(null);
		this.addKeyListener(new FrameListener());
		frame.setBackground(Color.GRAY);
		frame.setSize(H, W);
	}
	private void initInput(){
		//Text
		JLabel label = new JLabel("Input");
		label.setLocation(10, 10);
		this.add(label);
		//Input
		in	= new JTextField("");
		in.setBounds(10, 15, 100, 10);
		in.addKeyListener(new JInputListener());
		this.add(in);
	}
	private void initOutput(){
		//Text
		JLabel label = new JLabel("Output");
		label.setLocation(35, 10);
		this.add(label);
		//Output
	}

}

Die Texte werden alle in einer Linie generiert, und das Input Kästchen ist einfach nur winzig. Wieso?
 
Zuletzt bearbeitet:
Die JTextArea wird der Output ^^ Als Input nehme ich jedoch einen JTextField.. Kann ich auch gerne ändern. Out ist noch nicht initialisiert, da ich erst mal den Rest soweit zum funktionieren bringen will 🙁

Und vll habe ich mich falsch ausgedrückt - Mein Problem ist nicht wirklich ein ZeilenUmbruch, sondern das generelle setten der Location & Größe. Es will einfach nicht funktionieren! Habe schon alle möglichen LayoutManager durchversucht; GridLayout, GridBagLayout, und so weiter..
 
Wie solls denn ausschauen?
In der Mitte eine JTextArea, dadrunter ein JTextField mit nem "Abschicken" button? Das wäre ein Fall für zwei verschachtelte BorderLayouts.
 
Ich würd im normalen (Border) Layout einfach den Input als SOUTH adden und den Output als CENTER.
Den Input musst du dann natürlich mit ENTER ausführen.
 
soweit ich weiß, kann man aber bei der (neueren) Windows-Konsole mit dem Menü(oben links klicken) Markierungs- & Kopierbefehle anwenden...
 
@EikeB Nunja, "ganz oben" ein kleiner Text, darunter eine einzeilige Eingabe, neben der Eingabe ein Button, unter der Eingabe noch ein Text, und da unten dann die "Output-Konsole" aus der man kopieren kann - Jedoch nicht reinschreiben. Das Problem ist, dass ich noch nie wirklich mit Layout's gearbeitet habe - Das einzige was ich bisher mit GUI/Graphic gemacht habe, war ein winziges bisschen rumprobieren mit dem Engine "Slick" :/

@jurom Naja, aber spätestens das Format geht in der Windows Konsole verloren, zudem ist es auch leichter einfach direkt strgc statt das mit dem rechtsklick machen.
 
Wie gesagt, lässt sich mit zwei BorderLayouts relativ einfach hinkriegen:
Java:
JFrame frame = new JFrame ("Konsolendemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Konsole
JTextArea textArea = new JTextArea("Hier steht Text");
textArea.setEditable(false);
textArea.setPreferredSize(new Dimension (300, 200));

// Eingabefeld + Button
JPanel inputContainer = new JPanel();
inputContainer.setLayout(new BorderLayout());
JTextField inputField = new JTextField();
JButton button = new JButton ("Abschicken");
inputContainer.add(inputField, BorderLayout.CENTER);
inputContainer.add(button, BorderLayout.EAST);

// Alles zusammenfügen
frame.add(textArea, BorderLayout.CENTER);
frame.add(inputContainer, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
Siehe auch: A Visual Guide to Layout Managers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
 
Vielen Dank!

Dann noch eine Frage: Was genau ist BorderLayout.CENTER/EAST/SOUTH und so? Klar, richtungen, aber was bewirken sie?

Achja, und wie kann man einen Scrollbalken erstellen? Das wenn der Text aus dem Bild geht - Egal ob seitlich oder weil zuviel dri nsteht - Man scrollen kann..
 
Zuletzt bearbeitet:
Also entweder mache ich etwas gehörig falsch, oder ich weiß nicht:

Java:
scrollS	= new JScrollPane(textArea);
		//inputContainer.add(scrollS, BorderLayout.CENTER);
		frame.add(scrollS, BorderLayout.CENTER);

Auf den InputContainer kann ich es nicht hinzufügen, da ansonsten mein Input verdeckt wird - Keine Ahnung wieso.
 
Ich kann nicht, ich weiß nicht, keine Ahnung wieso...

Du könntest dich vielleicht mal etwas länger als 10 Minuten mit einem Thema beschäftigen. Lese dir die Dokumentationen durch. Nimm ein Buch, dass das von A an erklärt.

Hier im Forum ständig so minimal Fragen zu posten bringt dich nicht weiter.
 
😳
Ich weiß, nur ist mein Englisch mehr als miserabel 🙁 Nach guten Tutorials habe ich bereits vergeblich gegoogelt..

Naja, fast geschafft - Eine Scrollbar ist drauf, allerdings wird sie nicht kleiner wenn der Text größer wird ._.
 
@EikeB Nunja, "ganz oben" ein kleiner Text, darunter eine einzeilige Eingabe, neben der Eingabe ein Button, unter der Eingabe noch ein Text, und da unten dann die "Output-Konsole" aus der man kopieren kann - Jedoch nicht reinschreiben. Das Problem ist, dass ich noch nie wirklich mit Layout's gearbeitet habe - Das einzige was ich bisher mit GUI/Graphic gemacht habe, war ein winziges bisschen rumprobieren mit dem Engine "Slick" :/

@jurom Naja, aber spätestens das Format geht in der Windows Konsole verloren, zudem ist es auch leichter einfach direkt strgc statt das mit dem rechtsklick machen.

Text: JLabel / JTextField
einzeilige EEingabe: JTextField
Button: JButton
output: JTextArea
Layout: your choice!

Habe ich dich denn jetzt richtig verstanden? Wurde doch alles schon geschrieben, dann mal auf. 😀
 
Das wurde ja auch bereits gemacht ^^ Das zurzeit einzige Problem in der GUI selbst sind diescrollpanes, u d meine history funktion welche nicht richtig funktioniert - was aber wieder ne andere sache ist 😀
 
Juhu, gelöst 😀!! Ich Dussel hatte die preferredSize von der TextArea UND dem ScrollPanel gesetzt -.-

Bleibt also nur noch das History Problem, doch ich glaube das kann ich auch selbst lösen 😀 (Ich meld mich dann)
 

Zurück
Oben