Java GUI - Låsa JTextArea i GridBagLayout
Hej!
Nu är det så att jag håller på med en GUI i Java, det är en del av mitt ett projektarbete. Det ska bli ett textbaserat spel.
För nuvarande så ser det ut så här:
(Färgerna är tillfälliga, för att markera start och slut på nuvarande textfält)
Till problemet:
När något skrivs i det antingen det röda eller det gröna fältet så växer det andra fältet. Det flyttas i sidled, enligt pilarna. Exempel: Något skrivs i det gröna, det gröna blir större och det röda blir mindre. Och vice versa.
Finns det något sätt att låsa fälten? Jag vill att de ska behålla samma proportioner om användaren väljer att förstora eller förminska fönstret.
Layoutmanagern jag använder mig av är GridBagLayout.
Koden:
import javax.swing.*;
import java.awt.*;
public class Eric {
public static void main(String args[]){
JFrame frame = new JFrame("Zork");
JTextArea mainT = new JTextArea("main Text");
JTextArea inv = new JTextArea("inventory");
JTextField InputField = new JTextField("write");
JButton button = new JButton("done writing");
JPanel Mid = new JPanel();
JPanel End= new JPanel();
//inv.setEditable(false);
//mainT.setEditable(false);
frame.setBounds(100, 100, 600, 600);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(Mid, BorderLayout.CENTER);
frame.add(End, BorderLayout.SOUTH);
Mid.setLayout(new GridBagLayout());
End.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
//Det gröna fältet
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 0.8;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.BOTH;
Mid.add(mainT, gbc);
//Det röda fältet
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 0.2;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.BOTH;
Mid.add(inv, gbc);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.HORIZONTAL;
End.add(InputField, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 0.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.NONE;
End.add(button, gbc);
//Färger
mainT.setBackground(Color.RED);
inv.setBackground(Color.green);
InputField.setBackground(Color.PINK);
}
}
EDIT: Tror jag har löst det, dock så bryter den inte rader som den ska. Men det tror jag inte den gjorde innan heller. Det jag gjorde var att jag lade till dessa två rader:
mainT.setPreferredSize(new Dimension(10, 10));
inv.setPreferredSize(new Dimension(10, 10));
Det jag har fått fram av mitt testande är att det verkar inte behöva stå 10 som argument, utan det verkar kunna vara vad som helst. Huvusaken är att det fungerar.
Btw
Jag antar att GridBagLayout inte används så frekvent annars, med tanke på videon?