¿Por qué el anclaje GridBagLayout no funciona para varios botones?

Estoy tratando de apilar dos botones uno encima del otro y anclarlos a la parte superior de un panel, pero el segundo botón permanece en el centro del panel.

En este código, creo un panel dividido y luego le agrego dos paneles. Un panel contiene los botones (el panel que me interesa) y el otro contiene un campo de texto. Los botones hacen que aparezca texto en el campo de texto.

Me gustaría averiguar qué combinación correcta de parámetros GridBagLayout me permitirá colocar dos botones uno encima del otro (sin espacios intermedios) y anclarlos en la parte superior del panel. He intentado algunas cosas diferentes con el parámetro de ponderación y cuadrícula, pero fue en vano.

Gracias de antemano por su tiempo y respuestas.

package gridbagtest;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class GridBagTest
{
    public static void main(String[] args)
    {
        JFrame gridTest = new JFrame("Grid Bag Layout Test");

        JSplitPane splitPaneHorizontal = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

        final JTextField blah = new JTextField(30);
        JPanel textPane = new JPanel();
        textPane.add(blah);

        JPanel buttonPane = new JPanel();
        buttonPane.setBackground(Color.WHITE);
        buttonPane.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        c.anchor = GridBagConstraints.FIRST_LINE_START;
        c.gridx = 0;
//      c.gridy = GridBagConstraints.RELATIVE;
        c.gridy = 0;
        c.weightx = 1;
        c.weighty = 1;

        JButton flightPlanButton = new JButton("First Button");

        flightPlanButton.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
            {   blah.setText("First Button pushed");    }
         });

        buttonPane.add(flightPlanButton, c);

        JButton powerButton = new JButton("Second Button");
        powerButton.addActionListener(new ActionListener()                            
        {
            public void actionPerformed(ActionEvent e) 
            {   blah.setText("Second Button pushed");   }
        });

        c.gridy = 1;
        buttonPane.add(powerButton, c);

        splitPaneHorizontal.setTopComponent(new JScrollPane(buttonPane));
        splitPaneHorizontal.setBottomComponent(textPane);   

        gridTest.add(splitPaneHorizontal);
        gridTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gridTest.pack();
        gridTest.setSize(600,800);
        gridTest.setVisible(true);

    }
}
Respuesta 1

public Void ReserveTimeList () {String sql = "select to_char (to_char (start_time, 'HH24: MI') || '-' || to_char (end_time, 'HH24: MI')) from register_table"; pruebe {DefaultListModel dlm = ...

Estoy dando mis primeros pasos en el desarrollo del paquete osgi usando maven (maven-bundle-plugin) y apache karaf. Mi pregunta es: ¿cómo puedo importar paquetes de otro paquete? Si tengo dos paquetes A y B. ...

Tengo un JTabbedPane simple que muestra archivos de texto. Cada pestaña contiene una JList envuelta en un JScrollPane. Me gustaría poder cerrar las pestañas individuales con un clic derecho, pero no puedo obtener esto ...

Estoy escribiendo código para el procesamiento de texto, y las cosas van mucho más rápido si primero convierto las cadenas a enteros. Para hacer esto, hice una clase de Diccionario, donde cada vez que veo una nueva cadena, le doy un ...