Hallo miteinander
ich habe ein Problem mit dem GridBagLayout: Ich habe schön geplant, wie mein UI in Zellen "strukturiert" werden kann, d. h. wie viele Zellen hoch und breit jedes Element sein soll, aber nun habe ich gemerkt, dass die Zellgrösse gar nicht bei allen Zellen gleich ist. Nun die Frage: Kann man irgenwie erzwingen, dass alle Zellen die gleiche Breite und Höhe haben? Geht es auch etwas weniger aufwendig, als einfach allen Komponenten dieselbe preferredSize zu geben?
Falls es jemanden interessiert, es geht um folgenden Code:
Vielen Dank im Voraus
Warrior7777
ich habe ein Problem mit dem GridBagLayout: Ich habe schön geplant, wie mein UI in Zellen "strukturiert" werden kann, d. h. wie viele Zellen hoch und breit jedes Element sein soll, aber nun habe ich gemerkt, dass die Zellgrösse gar nicht bei allen Zellen gleich ist. Nun die Frage: Kann man irgenwie erzwingen, dass alle Zellen die gleiche Breite und Höhe haben? Geht es auch etwas weniger aufwendig, als einfach allen Komponenten dieselbe preferredSize zu geben?
Falls es jemanden interessiert, es geht um folgenden Code:
Java:
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.URL;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
public class DesktopUI implements ActionListener{
private JFrame mainWindow;
private JLabel clearTextLabel;
private JLabel cryptoTextLabel;
private JTextArea clearTextArea;
private JTextArea cryptoTextArea;
//placeholder
private JComponent placeholder;
public DesktopUI(){
//set the components
this.clearTextLabel=new JLabel("Clear Text:", SwingConstants.CENTER);
this.cryptoTextLabel=new JLabel("Crypto Text:", SwingConstants.CENTER);
this.clearTextArea=new JTextArea("", 20, 20);
this.cryptoTextArea=new JTextArea("", 20, 20);
this.placeholder=new JLabel("PLACEHOLDER", SwingConstants.CENTER);
JPanel pane=new JPanel();
GridBagLayout layout=new GridBagLayout();
pane.setLayout(layout);
GridBagConstraints c=new GridBagConstraints();
c.insets=new Insets(5, 5, 5, 5);
c.fill=GridBagConstraints.BOTH;
c.weightx=1;
c.weighty=1;
c.anchor=GridBagConstraints.CENTER;
int middleHeight=20;
int totalHeight=31;
c.gridx=0;
c.gridy=0;
c.gridwidth=1;
c.gridheight=1;
pane.add(this.clearTextLabel, c);
c.gridx=1;
c.gridy=0;
c.gridwidth=1;
c.gridheight=1;
pane.add(this.cryptoTextLabel, c);
c.gridx=0;
c.gridy=1;
c.gridwidth=1;
c.gridheight=middleHeight;
pane.add(this.clearTextArea, c);
c.gridx=1;
c.gridy=1;
c.gridwidth=1;
c.gridheight=middleHeight;
pane.add(this.cryptoTextArea, c);
c.gridx=0;
c.gridy=middleHeight+1;
c.gridwidth=2;
c.gridheight=totalHeight-middleHeight-1;
pane.add(this.placeholder, c);
//DEBUGGING-----------------------
this.clearTextLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
this.cryptoTextLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
this.clearTextArea.setBorder(BorderFactory.createLineBorder(Color.BLACK));
this.cryptoTextArea.setBorder(BorderFactory.createLineBorder(Color.BLACK));
this.placeholder.setBorder(BorderFactory.createLineBorder(Color.BLACK));
pane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
//--------------------------------
pane.setSize(Toolkit.getDefaultToolkit().getScreenSize());
this.mainWindow.setContentPane(pane);
//set the window properties
this.mainWindow.pack();
this.mainWindow.setSize(Toolkit.getDefaultToolkit().getScreenSize());
this.mainWindow.setLocationRelativeTo(null);
//show the window
this.mainWindow.setVisible(true);
}
}
Warrior7777