Buenas, ando intentando crear una especie de programa en el que metere un chat y (más adelante cuando sepa mejor Java) juegos para jugar 2 jugadores.
Tengo un borderLayout en el que están los paneles, y dentro del panel del centro tengo un GridBagLayout.
En el JPanel con el GridBagLayout quiero hacer una ventana de chat y estoy intentando hacer que el area de texto ocupe la mayoria del espacio, pero tengo este problema:
(Uso WindowsBuilder porque en si me lio muchísimo en GridBagLayout, pero sigo teniendo problemas con él, por lo tanto, me podríais decir tambien como añadir mas columnas y/o filas al GridBagLayout?)
Cuando selecciono el área de texto salen las lineas rojas de cuando algo esta seleccionado en WindowsBuilder salen justo como debería estar el área de texto: Pegados a los bordes del JPanel. Pero el área de texto en si sale centrado y pequeño... No se pone como deberia...
Aqui dejo el código del GridBagLayout: (Uso Eclipse)
Código:
GridBagConstraints gbc_textArea = new GridBagConstraints();
gbc_textArea.gridx = 0;
gbc_textArea.gridy = 0;
gbc_textArea.gridwidth = 2;
gbc_textArea.gridheight = 1;
gbc_textArea.weightx = 1.0;
gbc_textArea.weighty = 1.0;
panel_1.add(textArea, gbc_textArea);
gbc_textArea.fill = GridBagConstraints.BOTH;
Codigo entero:
Código:
import javax.swing.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.*;
public class VentanaPrincipal extends JFrame implements ActionListener{
private JMenuBar bar;
private JMenu archivo,edicion;
private JMenuItem abrir,creditos,imprimir,pagina,oscuro;
private JPanel panel1;
private JButton b1,b2,b3,b4;
private JPanel statuspanel;
private JLabel status;
private BufferedImage logo;
private Label label;
private JPanel panel;
private JButton btnNewButton;
private JPanel panel_1;
private TextArea textArea;
public VentanaPrincipal(){
super("Unclain Manager 2012");
getContentPane().setBackground(Color.DARK_GRAY);
this.setSize(1200,800);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(true);
this.setLocationRelativeTo(null);
definirVentana();
panel1.setBackground(Color.GRAY);
statuspanel.setBackground(Color.GRAY);
panel = new JPanel();
panel.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
panel.setBackground(new Color(173, 216, 230));
status.setText("Lista de Contactos");
}
public void mouseExited(MouseEvent e){
panel.setBackground(SystemColor.inactiveCaptionText);
status.setText("En espera de una acción");
}
});
panel.setBackground(SystemColor.inactiveCaptionText);
getContentPane().add(panel, BorderLayout.WEST);
btnNewButton = new JButton("A\u00F1adir Contacto");
btnNewButton.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
status.setText("Agregar contactos a la lista");
}
public void mouseExited(MouseEvent e){
status.setText("En espera de una acción");
}
});
btnNewButton.setForeground(Color.BLACK);
btnNewButton.setBackground(UIManager.getColor("Button.background"));
panel.add(btnNewButton);
panel_1 = new JPanel();
panel_1.setBackground(Color.DARK_GRAY);
getContentPane().add(panel_1, BorderLayout.CENTER);
GridBagLayout gbl_panel_1 = new GridBagLayout();
gbl_panel_1.columnWidths = new int[]{0, 0};
gbl_panel_1.rowHeights = new int[]{0, 0};
gbl_panel_1.columnWeights = new double[]{0.0, Double.MIN_VALUE};
gbl_panel_1.rowWeights = new double[]{0.0, Double.MIN_VALUE};
panel_1.setLayout(gbl_panel_1);
textArea = new TextArea();
GridBagConstraints gbc_textArea = new GridBagConstraints();
gbc_textArea.gridx = 0;
gbc_textArea.gridy = 0;
gbc_textArea.gridwidth = 2;
gbc_textArea.gridheight = 1;
gbc_textArea.weightx = 1.0;
gbc_textArea.weighty = 1.0;
panel_1.add(textArea, gbc_textArea);
gbc_textArea.fill = GridBagConstraints.BOTH;
this.validate();
this.invalidate();
cargarImagenes();
}
public void definirVentana(){
getContentPane().setLayout(new BorderLayout());
bar = new JMenuBar();
archivo = new JMenu("Archivo");
edicion = new JMenu("Editar");
bar.add(archivo);
bar.add(edicion);
abrir = new JMenuItem("Abrir");
creditos = new JMenuItem("Creditos");
imprimir = new JMenuItem("Imprimir");
pagina = new JMenuItem("Ir a Unclain(pagina)");
oscuro = new JMenuItem("Cambiar estilo a SuperBlue");
oscuro.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(e.getSource()==oscuro){
panel1.setBackground(Color.WHITE);
panel.setBackground(Color.LIGHT_GRAY);
statuspanel.setBackground(Color.LIGHT_GRAY);
status.setForeground(Color.BLACK);
}
}
});
archivo.add(abrir);
archivo.add(imprimir);
archivo.add(pagina);
archivo.add(creditos);
edicion.add(oscuro);
this.setJMenuBar(bar);
panel1 = new JPanel();
b1 = new JButton("Inicio");
b1.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
status.setText("Ir al Inicio de Unclain Manager");
}
public void mouseExited(MouseEvent e) {
status.setText("En espera de una acción");
}
});
b1.setBackground(Color.LIGHT_GRAY);
b1.setFont(new Font("Arial", Font.PLAIN, 14));
b1.setHorizontalAlignment(SwingConstants.LEFT);
b2 = new JButton("Chat");
b2.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
status.setText("Ir al chat de Unclain Manager");
}
public void mouseExited(MouseEvent e) {
status.setText("En espera de una acción");
}
});
b2.setBackground(Color.LIGHT_GRAY);
b2.setFont(new Font("Arial", Font.PLAIN, 14));
b2.setHorizontalAlignment(SwingConstants.LEFT);
b3 = new JButton("Juegos");
b3.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
status.setText("Ir a Juegos de Unclain Manager");
}
public void mouseExited(MouseEvent e) {
status.setText("En espera de una acción");
}
});
b3.setBackground(Color.LIGHT_GRAY);
b3.setFont(new Font("Arial", Font.PLAIN, 14));
b3.setHorizontalAlignment(SwingConstants.LEFT);
b4 = new JButton("Otros");
b4.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
status.setText("Ir a Otros,encontrarás varias cosas más");
}
public void mouseExited(MouseEvent e) {
status.setText("En espera de una acción");
}
});
b4.setBackground(Color.LIGHT_GRAY);
b4.setFont(new Font("Arial", Font.PLAIN, 14));
b4.setHorizontalAlignment(SwingConstants.LEFT);
getContentPane().add(panel1,BorderLayout.NORTH);
label = new Label("Unclain Manager 2012");
label.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
status.setText("Unclain Manager 2012 logo temporal");
}
public void mouseExited(MouseEvent e) {
status.setText("En espera de una acción");
}
});
label.setBackground(Color.GRAY);
label.setForeground(Color.LIGHT_GRAY);
label.setFont(new Font("TwyliteZone", Font.PLAIN, 19));
panel1.add(label);
panel1.add(b1);
panel1.add(b2);
panel1.add(b3);
panel1.add(b4);
statuspanel = new JPanel();
statuspanel.setForeground(Color.WHITE);
status = new JLabel("En espera de una acción");
status.setHorizontalAlignment(SwingConstants.LEFT);
status.setFont(new Font("Arial", Font.PLAIN, 11));
status.setForeground(SystemColor.activeCaptionBorder);
statuspanel.add(status);
getContentPane().add(statuspanel,BorderLayout.SOUTH);
}
public void paintComponent(Graphics g){
g.drawImage(logo,100,300,null);
}
public void cargarImagenes(){
try{
logo = ImageIO.read(getClass().getClassLoader().getResource("logo.png"));
}catch(Exception e){
System.out.println("No se encontro la imagen");
}
}
public void actionPerformed(ActionEvent e) {
}
}
Muchas gracias por tomaros el tiempo de ayudarme. :D