JTextArea veränder Größe während Laufzeit; GridBagLayout

Status
Nicht offen für weitere Antworten.
P

peterchen55

Gast
Guten Tag,

Ich habe 2 Probleme mit meinem Programm (source siehe unten):

1. Ich verwende das GridBagLayout (7x7). Und die verwendete JTextArea-Komponente soll 6 Spalten und 6 Zeilen groß sein. Das macht er aber nur dann, wenn das JTextArea mit mehrzeiligem Text komplett gefüllt wird. Ansonsten nimmt es weniger Platz ins Anspruch, als es soll.

2. Ich will ein JScrollPane für das JTextArea. Wenn Ich das aber mache, wird das JTextArea so klein, dass es im window so gut wie garnicht mehr erkennbar ist: Es wird winzig klein! Das darf so natürlich nicht sein, Ich will, dass es trotz JScrollPane groß bleibt (6x6!!!).

P.S.: Das Layout habe Ich mir so gedacht. In der ersten Zeile sind 7 gleich große Elemente: JLabel, JTextField, JLabel, JTextField, JLabel, JTextField, JButton. Und die nächsten 6 Spalten soll eben dieses JtextArea komplett bis zum Zeilenende ausfüllen, und halt wie gesagt: Am besten mit JScrollPane.

Hier der Source:

Code:
//kleiner FTP-Client, der nur Dateien im Hauptverzeichnis auflisten kann

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

import sun.net.*;
import sun.net.ftp.*;
import java.io.*;

public class FTP_Client2 extends JFrame implements ActionListener {

private JTextField tf_host = new JTextField ("ftp.adobe.com") ;
private JTextField tf_user = new JTextField ("anonymous") ;
private JTextField tf_pw = new JTextField ("a@b.c") ;

private JLabel lbl_host = new JLabel ("Host:") ;
private JLabel lbl_user = new JLabel ("User:") ;
private JLabel lbl_pw = new JLabel ("Pass:") ;

private JTextArea file_list = new JTextArea ("");

  public FTP_Client2 (String Title) {
    super (Title);
	
	GridBagLayout l = new GridBagLayout ();
    setLayout (l);
	
    setDefaultCloseOperation (EXIT_ON_CLOSE);
    setSize (600, 400);
	
	GridBagConstraints c = new GridBagConstraints ();
	
	c.fill    = GridBagConstraints.BOTH;
    c.weightx = 1;
    c.weighty = 1;
    c.gridheight = 1;
	c.gridwidth = 1;
	
    l.setConstraints (lbl_host, c);
    add (lbl_host);
	
	l.setConstraints (tf_host, c);
	add (tf_host);
	
	l.setConstraints (lbl_user, c);
	add (lbl_user);
	
	l.setConstraints (tf_user, c);
	add (tf_user);
	
	l.setConstraints (lbl_pw, c);
	add (lbl_pw);
	
	l.setConstraints (tf_pw, c);
	add (tf_pw);
	
	JButton b = new JButton ("connect");
	c.gridwidth = GridBagConstraints.REMAINDER;
	l.setConstraints (b, c);
    add (b);
    b.addActionListener (this);
	
	c.gridheight = 6;
	c.gridwidth = GridBagConstraints.REMAINDER;
	
	file_list = new JTextArea ("");
	l.setConstraints (file_list, c);
	add(file_list);
	
	setVisible (true);
  }
  
  
  public void actionPerformed(ActionEvent event) {
    if (event.getActionCommand()=="connect")
	{
		System.out.println ("--- connect ---");
		
		try {
        FtpClient ftp = new FtpClient (tf_host.getText());
        ftp.login (tf_user.getText(), tf_pw.getText());
        ftp.ascii ();
        BufferedReader r;
        InputStream t;
        String line = null;
        
        t = ftp.list ();
        line = null;
        r = new BufferedReader(new InputStreamReader(t));
		file_list.setText("");
        while ((line = r.readLine ()) != null)
		{
		if (file_list.getText().length()==0)
			file_list.setText(line);
		else
			file_list.setText(file_list.getText() + "\n" + line);
        System.out.println (line);
		}
		
        t.close ();
		
      } catch (IOException e) {
        System.err.println (e);
      }
	}
  }
  

  public static void main (String [] args) {
    new FTP_Client2 ("Hardcore FTP Client");
  }
}

MfG
Peter
 

André Uhres

Top Contributor
Alle setConstraints entfernen und die JComponents so hinzufügen: add (lbl_host, c); usw...
GridBagConstraints am Anfang:
c.weightx = 1.0;
c.weighty = 1.0;

Für Textarea:
c.gridy = 1;
c.gridwidth = 7;
c.gridheight = 6;
c.fill = GridBagConstraints.BOTH;
c.weightx = 7.0;
c.weighty = 6.0;

file_list = new JTextArea("");

add(new JScrollPane(file_list),c);
 
P

peterchen55

Gast
Sorry, eine Frage noch: Es ist ja in der Regel so, dass JScrollPane bei Null-Layout Probleme macht. Sollte man daher lieber die JScrollPanes absolut/fix plazieren, geht's dann besser? Oder steigt man in so einem Fall allgemein auf Grid(bag)layout um?
 

Wildcard

Top Contributor
Du kannst ja nur absolut platzieren wenn du NullLayout verwendest, und genau das macht Probleme.
Nicht zwangsläufig Grid(Bag)Layout, sondern einfach den gerade passenden LayoutManager.
 

roddy

Aktives Mitglied
Ich habe ein ähnliches Problem wie der Threadstarter.

Ich möchte, dass es so aussieht:

A A B B
A A C D

A = Othello-Spielfeld
B = TextArea für den Chat
C = TextBox für Chateingabe
D = Senden Button für Chateingabe

Es sieht aber leider wie folgt aus:

Link zum Bild

Ich denke ich habe alles analog zum obigen Beispiel gemacht, daher verstehe ich nicht, dass es nicht funktioniert.

Wäre schön, wenn mir da jemand helfen könnte!

Mein Programmcode:

Code:
	public static final int WIDTH = 870;
	public static final int HEIGHT = 435;	
	
	public GameDialog(ClientGuiSwing gui, SessionProxy session)
	{
		this.clientGui = gui;
		this.session = session;
		
		// Layout setzen:
		GridBagLayout myLayout = new GridBagLayout();
		this.setLayout(myLayout);
		
		// Spielfeld einfügen
		board = new SwingBoard();
		GridBagConstraints boardConstraints = new GridBagConstraints();
		boardConstraints.anchor = GridBagConstraints.CENTER;
		boardConstraints.fill = GridBagConstraints.BOTH;
		boardConstraints.gridheight = 2;
		boardConstraints.gridwidth = 2;
		boardConstraints.gridx = 0;
		boardConstraints.gridy = 0;
		boardConstraints.insets = new Insets(0,0,0,0);
		boardConstraints.ipadx = 0;
		boardConstraints.ipady = 0;
		boardConstraints.weightx = 2.0;
		boardConstraints.weighty = 2.0;
//		myLayout.addLayoutComponent(board, boardConstraints);
//		this.add(board);
		this.add(board, boardConstraints);
		
		JScrollPane serverMessagesScrollPane = new JScrollPane();
		serverMessagesScrollPane.setSize(435,380);
		serverMessages = new JTextArea();
		serverMessages.setEditable(false);
		serverMessagesScrollPane.setViewportView(serverMessages);		
		GridBagConstraints serverMessagesScrollPaneConstraints = new GridBagConstraints();
		serverMessagesScrollPaneConstraints.anchor = GridBagConstraints.CENTER;
		serverMessagesScrollPaneConstraints.fill = GridBagConstraints.BOTH;
		serverMessagesScrollPaneConstraints.gridheight = 1;
		serverMessagesScrollPaneConstraints.gridwidth = 2;
		serverMessagesScrollPaneConstraints.gridx = 2;
		serverMessagesScrollPaneConstraints.gridy = 0;
		serverMessagesScrollPaneConstraints.insets = new Insets(0,0,0,0);
		serverMessagesScrollPaneConstraints.ipadx = 0;
		serverMessagesScrollPaneConstraints.ipady = 0;
		serverMessagesScrollPaneConstraints.weightx = 2.0;
		serverMessagesScrollPaneConstraints.weighty = 1.0;
//		myLayout.addLayoutComponent(serverMessagesScrollPane,serverMessagesScrollPaneConstraints);
//		this.add(serverMessagesScrollPane);
		add(new JScrollPane(serverMessages),serverMessagesScrollPaneConstraints);

		messageText = new JTextField();
		messageText.setSize(400,55);
		GridBagConstraints messageTextConstraints = new GridBagConstraints();
		messageTextConstraints.anchor = GridBagConstraints.WEST;
		messageTextConstraints.fill = GridBagConstraints.HORIZONTAL;
		messageTextConstraints.gridheight = 1;
		messageTextConstraints.gridwidth = 1;
		messageTextConstraints.gridx = 2;
		messageTextConstraints.gridy = 1;
		messageTextConstraints.insets = new Insets(0,0,0,0);
		messageTextConstraints.ipadx = 0;
		messageTextConstraints.ipady = 0;
		messageTextConstraints.weightx = 1.0;
		messageTextConstraints.weighty = 1.0;
//		myLayout.addLayoutComponent(messageText,messageTextConstraints);
//		this.add(messageText);
		this.add(messageText,messageTextConstraints);

		sendButton = new JButton("Send");
		sendButton.addActionListener(this);
		GridBagConstraints sendButtonConstraints = new GridBagConstraints();
		sendButtonConstraints.anchor = GridBagConstraints.EAST;
		sendButtonConstraints.fill = GridBagConstraints.NONE;
		sendButtonConstraints.gridheight = 1;
		sendButtonConstraints.gridwidth = 1;
		sendButtonConstraints.gridx = 3;
		sendButtonConstraints.gridy = 1;
		sendButtonConstraints.insets = new Insets(0,0,0,0);
		sendButtonConstraints.ipadx = 0;
		sendButtonConstraints.ipady = 0;
		sendButtonConstraints.weightx = 1.0;
		sendButtonConstraints.weighty = 1.0;
//		myLayout.addLayoutComponent(sendButton, sendButtonConstraints);
//		this.add(sendButton);
		this.add(sendButton, sendButtonConstraints);
		
		// Listener hinzufügen
		this.addWindowListener(this);
		this.addKeyListener(this);

		// Fenster formatieren		
		this.setLocationRelativeTo(this.getParent());
		this.setLayout(new GridBagLayout());
		this.setMinimumSize(new Dimension(WIDTH, HEIGHT));
		this.setSize(WIDTH, HEIGHT);	
		this.setResizable(false);
		this.setTitle("Play Othello...");
	}

Danke für eure Hilfe!
 

André Uhres

Top Contributor
Code:
/*
 * GameDialogDemo.java
 */
package layout;
import java.awt.*;
import javax.swing.*;
public class GameDialogDemo extends JFrame {
    public GameDialogDemo() {
        super("Play Othello...");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(820,490);
        setResizable(false);
        setLocationRelativeTo(null);
        GridBagConstraints gridBagConstraints;
        //JComponents erzeugen:
        mainPanel = new JPanel(new GridBagLayout());
        board = new JPanel();
        serverMessages = new JTextArea();
        messageText = new JTextField();
        sendButton = new JButton("Send");
        //Layout:
        board.setBackground(Color.LIGHT_GRAY);                  //board
        board.setPreferredSize(new Dimension(400, 400));
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridwidth = 4;
        gridBagConstraints.gridheight = 4;
        gridBagConstraints.fill = GridBagConstraints.BOTH;
        mainPanel.add(board, gridBagConstraints);
        serverMessages.setEditable(false);                      //serverMessages
        serverMessages.setBackground(new Color(255, 255, 204));
        serverMessages.setPreferredSize(new Dimension(400, 400));
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.gridheight = 3;
        gridBagConstraints.insets = new Insets(0, 3, 0, 0);
        mainPanel.add(new JScrollPane(serverMessages), gridBagConstraints);
        messageText.setPreferredSize(new Dimension(300, 50));   //messageText
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.insets = new Insets(0, 3, 0, 0);
        mainPanel.add(messageText, gridBagConstraints);
        gridBagConstraints = new GridBagConstraints();          //sendButton
        gridBagConstraints.gridx = 5;
        gridBagConstraints.gridy = 3;
        mainPanel.add(sendButton, gridBagConstraints);
        getContentPane().add(mainPanel, BorderLayout.CENTER);
    }
    public static void main(String args[]) {new GameDialogDemo().setVisible(true);}
    private JButton sendButton;
    private JPanel mainPanel, board;
    private JTextArea serverMessages;
    private JTextField messageText;
}
 

Lille Emil

Neues Mitglied
Hallo.
Da ich erst vor kurzen mit Java angefangen habe (Lernvideo, Video2brain, Java5) und ich das Spiel Othello Klasse finde, wollte ich mal vorsichtig fragen, ob mir jemand seine Daten mir übermittelt.
Würde nämlich gerne verstehen, wie so ein Java Programm geschrieben wird. Wobei bei mir nur das Spielfeld ausreichen würde. Also Chat-Dialog wäre für mich ohne Bedeutung!
Danke.
MfG Daniel
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Bluedaishi JtextArea AWT, Swing, JavaFX & SWT 6
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
F JTextarea Steuern ~ consolenanbindung AWT, Swing, JavaFX & SWT 5
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
N JTextArea Events weiterleiten AWT, Swing, JavaFX & SWT 3
R JTextArea mit verschiedenen Textfarben AWT, Swing, JavaFX & SWT 6
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
HoloYoitsu jTextArea.setCaretPosition(); What am I doing wrong? AWT, Swing, JavaFX & SWT 0
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
M JTextArea - Leertaste "sperren" AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
F Swing Caret in JTextArea vergrößern AWT, Swing, JavaFX & SWT 2
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
N JFrame änliches wie JTextArea? AWT, Swing, JavaFX & SWT 2
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
O JTextArea befüllen AWT, Swing, JavaFX & SWT 2
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
C JTextArea scrollt bei append(String) aus Threads nicht ans Ende AWT, Swing, JavaFX & SWT 7
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
Hoppelmann Swing Tasten in JTextArea blockieren AWT, Swing, JavaFX & SWT 2
S JTextArea Tastaturanschläge AWT, Swing, JavaFX & SWT 2
E Swing JTextArea in JFrame, wie nun WindowFocusListener implementieren? AWT, Swing, JavaFX & SWT 2
S Problem mit JButton und JTextArea AWT, Swing, JavaFX & SWT 2
J Swing Mitwachsende JTextArea+ JPanel AWT, Swing, JavaFX & SWT 4
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
M Probleme mit der Selektion einer JTextArea AWT, Swing, JavaFX & SWT 3
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
hdi Swing ListCellRenderer + JTextArea + LineWrap AWT, Swing, JavaFX & SWT 6
T ComponentOrientation in JTextArea AWT, Swing, JavaFX & SWT 3
H Hintergrundbild in jTextArea AWT, Swing, JavaFX & SWT 4
G Swing JTextArea mit fester Anzahl Spalten! AWT, Swing, JavaFX & SWT 10
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
L JTextArea mit JScrollPane AWT, Swing, JavaFX & SWT 7
padde479 Swing replace JTextArea funktioniert nicht AWT, Swing, JavaFX & SWT 2
L Zeilenumbrüche aus JTextArea MIT in Textdatei schreiben AWT, Swing, JavaFX & SWT 4
_dp jTextArea/jTextPanel Auto Höhe AWT, Swing, JavaFX & SWT 5
Ollek JTextArea - Feste Zeilenanzahl(8 Zeilen) AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
Ollek Text in JTextField und JTextArea zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
P Datenelement anderer Klasse in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
P Scrollbar JTextArea AWT, Swing, JavaFX & SWT 23
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S System.out in JTextArea AWT, Swing, JavaFX & SWT 4
S Swing JTextArea - Bild auf/ab Tasten implementieren AWT, Swing, JavaFX & SWT 4
J JTextArea verschwindet bei resize vom JFrame AWT, Swing, JavaFX & SWT 2
VfL_Freak "setAccelerator/KeyStroke" bei JTextArea ? AWT, Swing, JavaFX & SWT 6
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
Dit_ JTextArea zu Zeile X scrollen AWT, Swing, JavaFX & SWT 4
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
M [erledigt] Bestimmte Zeile aus JTextArea löschen AWT, Swing, JavaFX & SWT 3
G Swing JTable und JTextArea synchronisieren AWT, Swing, JavaFX & SWT 2
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
M JTextArea AWT, Swing, JavaFX & SWT 2
E Swing JTextArea Alternative? AWT, Swing, JavaFX & SWT 5
A Swing JTextArea über Frame hinaus anzeigen? AWT, Swing, JavaFX & SWT 2
S JInternalFrame oder JTextArea neu laden AWT, Swing, JavaFX & SWT 2
N JTextArea.setLineWrap Bug? AWT, Swing, JavaFX & SWT 3
G Swing JTextArea/JScrollpane: JScrollbar position AWT, Swing, JavaFX & SWT 8
I JTextArea mit Copy Paste Funktion AWT, Swing, JavaFX & SWT 7
M Swing JTextArea größe anpassen & setBackground liefer Nullpointer AWT, Swing, JavaFX & SWT 4
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C JTextField und JTextArea - Verständnisproblem AWT, Swing, JavaFX & SWT 14
B Exceptions werfen und in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
F new Line in JTextarea AWT, Swing, JavaFX & SWT 15
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
J Beliebtes Problem: Scrollbar in JTextArea AWT, Swing, JavaFX & SWT 4
w0ddes Swing JTextArea auf JScrollPane - Autoscroll?! AWT, Swing, JavaFX & SWT 2
Developer_X Swing Java JTextArea auto scroll down AWT, Swing, JavaFX & SWT 6
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben