Ayer realizamos un ejercicio en el que creábamos un marco al que incluíamos unos botones utilizando para ello dos layout diferentes que uníamos en un solo marco consiguiendo nuestra propia calculadora. Bueno pues hoy se me ocurrió complicarme las cosas, que seguramente es la única forma de aprender algo.
Decidí cargar los datos en
la lámina utilizando un array. Y en Lugar del setBounds para dar tamaño al
cuadro utilizar pack(), que le dará tamaño de forma automática. Así de paso repaso materia que ya vi al principio. Puede que el resultado no sea ni mejor ni peor ya que no consigo reducir código pero todos los caminos llevan al mismo punto ¿no?. Y ya de paso practico código que es la única forma de aprender a programar. Machacar una vez tras otra código.
import java.awt.*;
import javax.swing.*;
public class
otroEjemplodelayout {
public static void main (String[] asgs) {
(new
Marco123456789()).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
(new Marco123456789()).setVisible(true);
}
}
class Panel extends JPanel{
public Panel() {
setLayout(new GridLayout(9,4));
//creamos un array con
los botones
JButton Botones_Calculo[] = {
new JButton("0"),new
JButton("1"),new
JButton("2"),new
JButton("3"),
new JButton("4"),new
JButton("5"),new
JButton("6"),new
JButton("7"),
new JButton("8"),new
JButton("9"),new
JButton("+"),new
JButton("-"),
new JButton("/"),new
JButton("*"),new
JButton("=")
};
//utilizamos un for
each para cargar los botones en la lamina
int n=0;
for (JButton i:Botones_Calculo) {
add(Botones_Calculo[n]);
n++;
}
}
}
class Consola extends JPanel{
public Consola(){
JTextField cuadro_texto =new
JTextField ("0",15);
cuadro_texto.setBackground(Color.magenta);
cuadro_texto.setFont(new Font("Arial Black",Font.BOLD,25));
add(cuadro_texto);
}
}
class Marco123456789 extends JFrame{
public Marco123456789() {
setTitle("Practica");
Panel Panel_de_cuerpo =new
Panel();
Consola zona_calculo = new
Consola();
//combinamos las dos
laminas en un frame
add(zona_calculo, BorderLayout.NORTH);
add(Panel_de_cuerpo, BorderLayout.CENTER);
/*el metodo pack() da
tamaño de forma automática a nuestro cuadro
* con el taño del conjunto
de los objetos que lo componen
*/
pack();
}
}
No hay comentarios:
Publicar un comentario