Confusión con el gestor GridBagLayout

Iniciado por marixxaa, 20 Enero 2016, 22:27 PM

0 Miembros y 1 Visitante están viendo este tema.

marixxaa

Hola! estoy intentando acomadar un JList en el marco, pero no tengo éxito, siempre queda en la misma posición, alguien me puede dar una ayuda? muchisimas gracias desde ya.

El código deja posicionado de esta manera al JList:



Y lo que yo deseo es esto:




String obrasSociales[] = { "Osde", "Osecac", "Galeno", "Swiss Medical"};
JList obraSocial =new JList(obrasSociales);
obraSocial.setVisibleRowCount(2);
ManejadorJList manejadorJList=new ManejadorJList();
obraSocial.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollPane = new JScrollPane(obraSocial);
cuenta=new JTextField("",10);
nombre = new JTextField("",10);
apellido = new JTextField("",10);
dni = new JTextField("",10);
cuentaLabel = new JLabel("Cuenta");
nombreLabel = new JLabel("Nombre");
apellidoLabel = new JLabel("Apellido");
dniLabel = new JLabel("Dni");
ingresar= new JButton("Ingresar");
modificar= new JButton("Modificar");
vacio=new JLabel(" ");

GridBagLayout gbl=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
FlowLayout flowLayout1=new FlowLayout();
setLayout(gbl);




gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridwidth=1;
gbc.insets=new Insets(0,0,0,0);
add(cuentaLabel, gbc);

gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.anchor=GridBagConstraints.WEST;
gbc.insets=new Insets(0,0,0,0);
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(cuenta, gbc);


gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridwidth=1;
gbc.insets=new Insets(0,0,0,0);
add(nombreLabel, gbc);
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(nombre, gbc);

gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridwidth=1;
gbc.insets=new Insets(0,0,0,0);
add(apellidoLabel, gbc);
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(apellido, gbc);

gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridwidth=1;
gbc.insets=new Insets(0,0,0,0);
add(dniLabel, gbc);
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(dni, gbc);


gbc.fill=GridBagConstraints.HORIZONTAL;
gbc.anchor=GridBagConstraints.WEST;
gbc.gridwidth=1;
gbc.insets=new Insets(0,0,0,0);
add(ingresar, gbc);
gbc.fill=GridBagConstraints.NONE;
add(modificar,gbc);


Muchas gracias desde ya!!!

0xFer

Te ayudaría mejor si publicaras todo el código, para no tener que escribir todo de nuevo en caso de que no haya trabajado antes con los temas sobre tu duda. Buscando por la web me encontré con algo parecido a lo que estas haciendo y te dejo el código;

Código (java) [Seleccionar]

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

import javax.swing.event.*;

public class FlightReservation extends JFrame

{

  public FlightReservation() {

    super("Flight Reservation Dialog");

    setSize(400, 300);

    JPanel p1 = new JPanel();

    p1.setLayout(new BoxLayout(p1, BoxLayout.X_AXIS));

    JPanel p1r = new JPanel();

    p1r.setBorder(new EmptyBorder(10, 10, 10, 10));

    // Variant 1

    p1r.setLayout(new GridLayout(3, 2, 5, 5));

    p1r.add(new JLabel("Date:"));

    p1r.add(new JTextField());

    p1r.add(new JLabel("From:"));

    JComboBox cb1 = new JComboBox();

    cb1.addItem("New York");

    p1r.add(cb1);

    p1r.add(new JLabel("To:"));

    JComboBox cb2 = new JComboBox();

    cb2.addItem("London");

    p1r.add(cb2);

    p1.add(p1r);
    JPanel p3 = new JPanel();

    p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
    String[] list = {"UNO","DOS","TRES","CUATRO","CINCO","SEIS","SIETEASDAS"};
    ScrollPane scrollpane = new ScrollPane();
    scrollpane.add(new JList(list));
    p3.add(scrollpane);
   
    p1.add(p3);

    getContentPane().add(p1, BorderLayout.NORTH);

    JPanel p4 = new JPanel();

    JPanel p4c = new JPanel();

    p4c.setLayout(new GridLayout(1, 3, 5, 5));

    JButton b1 = new JButton("Search");

    p4c.add(b1);

    JButton b2 = new JButton("Purchase");

    p4c.add(b2);

    JButton b3 = new JButton("Exit");

    p4c.add(b3);

    p4.add(p4c);

    getContentPane().add(p4, BorderLayout.CENTER);

    WindowListener wndCloser = new WindowAdapter() {

      public void windowClosing(WindowEvent e) {

        System.exit(0);

      }

    };

    addWindowListener(wndCloser);

    setVisible(true);

  }

  public static void main(String argv[]) {

    new FlightReservation();

  }

}




Lo he modificado un poco para que se parezca más a lo que quieres. Otra opción creo que sería meter un GridLayout dentro de otro en el de la derecha solo estaría la lista, bueno no sé si funcionaría.

Fuente Del Código
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}