que - jtextfield en java
Cómo colocar un JButton en una ubicación deseada en un JFrame usando Java (6)
Quiero poner un Jbutton en una coordenada particular en un JFrame. Puse setBounds para el JPanel (que coloqué en el JFrame) y también setBounds para el JButton. Sin embargo, no parecen funcionar como se esperaba.
Mi salida:
texto alt http://i49.tinypic.com/2d8kuah.jpg
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)?
Definir en alguna parte los 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 luego 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 objeto Container
que contiene todo el marco:
JFrame frame = new JFrame("Some name goes here");
Container contentPane = frame.getContentPane();
Espero que esto ayude, funciona muy bien para mí ...
Lo he descubierto lol. para el botón do .setBounds (0, 0, 220, 30) El diseño de .setBounds es así (int x, int y, int width, int height)
Primero debe configurar el diseño mediante la sintaxis pnlButton.setLayout()
, y luego elegir el diseño más adecuado que desee. Ej: pnlButton.setLayout(new FlowLayout(FlowLayout.LEADING, 5, 5));
. Y luego, toma ese JButton en JPanel.
Primero, recuerde la altura y el ancho del tamaño de su JPanel, luego observe: las coordenadas JButton son (xo, yo, x longitud, y y longitud). Si su ventana es 800x600, solo necesita escribir:
JButton.setBounds(0, 500, 100, 100);
Solo necesita usar un espacio de coordenadas para representar el botón y saber dónde termina la ventana y dónde comienza la ventana.
Se debe llamar a la siguiente línea antes de agregar su componente
pnlButton.setLayout(null);
Arriba se configurará su panel de contenido para utilizar diseño absoluto. Esto significa que siempre tendrá que establecer los límites de su componente explícitamente mediante el método setBounds
.
En general no recomendaría el uso de diseño absoluto.
Use child.setLocation(0, 0)
en el botón y parent.setLayout(null)
. En lugar de usar setBounds (...) en el JFrame para dimensionarlo, considere usar solo setSize(...)
y dejar que el sistema operativo posicione el 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);