Quiero poner un Jbutton en un determinado coordinar en un JFrame. Me puse setBounds para el JPanel (que coloqué en el JFrame) y también setBounds para el JButton. Sin embargo, ellos no parecen funcionar como se espera.

Mi Salida:

Cómo colocar un JButton en la ubicación deseada en un JFrame en Java

Este es mi código:

import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Control extends JFrame {

    //JPanel
    JPanel pnlButton = new JPanel();
    //Buttons
    JButton btnAddFlight = new JButton("Add Flight");

    public Control() {
        //FlightInfo setbounds
        btnAddFlight.setBounds(60, 400, 220, 30);

        //JPanel bounds
        pnlButton.setBounds(800, 800, 200, 100);

        //Adding to JFrame
        pnlButton.add(btnAddFlight);
        add(pnlButton);

        //JFrame properties
        setSize(400, 400);
        setBackground(Color.BLACK);
        setTitle("Air Traffic Control");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Control();
    }
}

¿Cómo se puede colocar el JButton en la coordenada (0, 0)?

InformationsquelleAutor Haxed | 2010-07-07

6 Comentarios

  1. 23

    Siguiente línea debe ser llamado antes de agregar el componente

    pnlButton.setLayout(null);

    Por encima de establecer su panel de contenido para el uso de diseño absoluto. Esto significa que siempre iba a tener para el conjunto del componente de los límites explícitamente mediante setBounds método.

    En general, yo no recomendaría el uso de diseño absoluto.

    • he utilizado setBounds para el botón y se hizo el diseño del panel null. A mí me funciona. Thks
  2. 4

    Uso niño.setLocation(0, 0) en el botón, y de los padres.setLayout(null). En lugar de utilizar setBounds(…) en el JFrame para tamaño, considere el uso de sólo setSize(...) y dejar que el sistema operativo de la posición del marco.

    //JPanel
    JPanel pnlButton = new JPanel();
    //Buttons
    JButton btnAddFlight = new JButton("Add Flight");
    
    public Control() {
    
        //JFrame layout
        this.setLayout(null);
    
        //JPanel layout
        pnlButton.setLayout(null);
    
        //Adding to JFrame
        pnlButton.add(btnAddFlight);
        add(pnlButton);
    
        //postioning
        pnlButton.setLocation(0,0);
    • El Java tutorial recomienda setBounds. setLocation sólo a los delegados a setBounds de todos modos.
    • Es verdad, aunque yo era (tal vez erróneamente) suponiendo que al preguntar a establecer la posición, como la mayoría de las aplicaciones, el JButton iba a ser de tamaño automáticamente. setLocation hace invocar setBounds, pero utiliza los componentes de la anchura y la altura, dejando tamaño natural basado en contenidos. Típico, pero tienes razón, no siempre lo que se quiere.
    • he utilizado setBounds para el botón y se hizo el diseño del panel null. A mí me funciona. Thks
  3. 2

    Definir en algún lugar de la consts :

    private static final int BUTTON_LOCATION_X = 300;  //location x 
    private static final int BUTTON_LOCATION_Y = 50;   //location y 
    private static final int BUTTON_SIZE_X = 140;      //size height
    private static final int BUTTON_SIZE_Y = 50;       //size width

    y, a continuación, a continuación :

                    JButton startButton = new JButton("Click Me To Start!");
                    //startButton.setBounds(300, 50,140, 50 );
                    startButton.setBounds(BUTTON_LOCATION_X
                                        , BUTTON_LOCATION_Y,
                                          BUTTON_SIZE_X, 
                                          BUTTON_SIZE_Y );
                    contentPane.add(startButton);

    donde contentPane es el Container objeto que contiene toda la trama :

     JFrame frame = new JFrame("Some name goes here");
     Container contentPane = frame.getContentPane();

    Espero que esto ayude , funciona muy bien para mí …

    • Así que la solución funciona, el único problema es que el JButtons esquina superior izquierda se encuentra en las coordenadas especificadas, y como yo estoy tratando de hacer circular los botones, necesito el botón de centro en las coordenadas. Hay una manera que usted sabe que de hacerlo, o debo abrir una nueva pregunta??
    • Hola? puede usted contestar a mi pregunta?
  4. 2

    Debe establecer la disposición primera por la sintaxis pnlButton.setLayout() y, a continuación, elegir el más adecuado diseño que deseas. Ex: pnlButton.setLayout(new FlowLayout(FlowLayout.LEADING, 5, 5));. Y a continuación, tome la que JButton en JPanel.

  5. 0

    He descubierto lol. para el botón .setBounds(0, 0, 220, 30)
    El .setBounds distribución es como este (int x, int y, int ancho, int alto)

  6. 0

    Primero, recuerde que su JPanel tamaño de la altura y el ancho de tamaño, a continuación, observar: JButton coordenadas es (xo, yo, x longitud , y longitud). Si la ventana es de 800×600, sólo tienes que escribir:

    JButton.setBounds(0, 500, 100, 100);

    Usted sólo tiene que utilizar una coordenada brecha para representar el botón, y saber donde esta la ventana termina y donde la ventana comienza.

Dejar respuesta

Please enter your comment!
Please enter your name here