Autor Tema: Ejercicio resuelto Java Swing formulario JTextField JRadioButton ButtonGroup  (Leído 712 veces)

Rigyel

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola buenas, subo dos ejercicio a desarrollar en Java Swing. Son muy simples, los subiré con ayuda para que sean mas faciles. Espero les ayude y suban resultados para poder ver cómo desarrollarlos.

1)Crear un formulario que permita ingresar el nombre, Rut amo y el sexo de una
mascota, y muestre en un cuadro de dialogo los datos ingresados.



Para el ingreso de datos se utilizará:

Nombre: JTextField.
Rut Amo: JTextField
Sexo: JRadioButton

Insertar dos botones para mostrar los datos y otro para limpiar los datos.

Utilizar un Button Group para formar el grupo de sexo. En caso de Netbeans(Recordar que es un componente que no se ve en el formulario, sino que hay que acceder a Navigator para cambiar su nombre. Si no se visualiza Navigator ir al menú window->Navigating- >Navigator)

2)Crear un formulario que permita cambiar el color de fondo de un JLabel según la
opción que se elija.




* Si se quiere dejar por defecto marcada una opción se debe seleccionar la propiedad
selected del JRadioButton y activarla

* Para dar color de fondo en tiempo de ejecución se utiliza la función setBackground.
« Última modificación: 07 de Febrero 2021, 11:36 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 724
    • Ver Perfil
Re: ejercicio de java swing a desarrollar
« Respuesta #1 en: 11 de Noviembre 2020, 00:06 »
Hola.

El segundo ejercicio, el de alterar el color de un panel, se me ha ocurrido una versión más interesante.
Ofrecer tres deslizadores, cada uno con valores entre 0 y 255 que representen los canales de color Rojo, Verde y Azul (RGB)
Cada canal ofrece valores de 8 bit (256 posibles valores), entre los tres, tenemos color 24 bit, es decir, 16.7 millones de colores distintos.




A continuación dejo el código para quien quiera verlo.
Es muy sencillo. No uso NetBeans así que es todo código escrito "a mano", que por lo general se entiende mucho mejor.

Código: [Seleccionar]
import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 *
 * Programa que ofrece tres deslizadores JSlider con valores
 * entre 0 y 255.
 * Cada valor sirve para establecer uno de los tres canales de colores RGB
 * con los cuales modificaremos el color de un panel.
 *
 * @author Kabuto
 */
public class SelectorColor extends JFrame {

private PanelSelectores panelSelectores;
private PanelColor panelColor;

public SelectorColor() {

panelSelectores = new PanelSelectores();
panelColor = new PanelColor();

setLayout(new BorderLayout());
JPanel pnNorte = new JPanel();
pnNorte.add(new JLabel("Use los deslizadores para seleccionar color RGB"));

JPanel pnCentro = new JPanel();
pnCentro.add(panelColor);
pnCentro.add(panelSelectores);

add(pnNorte, BorderLayout.NORTH);
add(pnCentro, BorderLayout.CENTER);


setTitle("Selector RGB");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}

/**
* Este es el panel que cambiará de color.
* Incluye un método para recibir el Color
* que ha de establecerse.
*/
private class PanelColor extends JPanel{

public PanelColor() {
setOpaque(true);
setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createBevelBorder(BevelBorder.RAISED, Color.WHITE, Color.BLACK),
BorderFactory.createEmptyBorder(150, 150, 150, 150)));
setColor(panelSelectores.getColor());
}

public void setColor(Color color) {
setBackground(color);
}
}

/**
* Este será el panel que contiene los tres
* objetos Selector(JSlider).
* Incluye un método para retornar el Color
* configurado según los valores seleccionados
* en los JSlider
*/
private class PanelSelectores extends JPanel {

private Selector canalRojo;
private Selector canalVerde;
private Selector canalAzul;

public PanelSelectores() {

canalRojo = new Selector(0, 255);
canalVerde = new Selector(0, 255);
canalAzul = new Selector(0, 255);

setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
PanelSelector pnRojo = new PanelSelector("Canal Rojo", canalRojo);
PanelSelector pnVerde = new PanelSelector("Canal Verde", canalVerde);
PanelSelector pnAzul = new PanelSelector("Canal Azul", canalAzul);
add(pnRojo);
add(pnVerde);
add(pnAzul);

}

public Color getColor() {
int r = canalRojo.getValue();
int v = canalVerde.getValue();
int a = canalAzul.getValue();

return new Color(r,v,a);
}
}

/**
* Clase para personalizar un JSlider.
* Necesitamos 3 JSlider con cierta configuración.
* Para no repetir 3 veces este código, creamos esta clase
* y así escribimos 1 sola vez.
*/
private class Selector extends JSlider {

public Selector(int min, int max) {
super(min, max);
setPaintTicks(true);
setPaintTrack(true);
setPaintLabels(true);
setMajorTickSpacing(255);
        setMinorTickSpacing(5);
        addChangeListener(new CambioSelector());
}

}

/**
* Clase sencilla que hereda de JPanel.
* Recibe por constructor un texto para el borde titulado y +
* un objeto Selector(un JSlider) para colocarlo en el panel.
* Puesto que vamos a tener tres Selector con el mismo aspecto,
* creando esta clase solo hay que escribir este código 1 sola vez
* y lo podemos usar para los 3 Selector.
* De lo contrario, habría que escribir esto tres veces.
*
*/
private class PanelSelector extends JPanel {

public PanelSelector(String titulo, Selector selector) {
add(selector);
setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(titulo),
BorderFactory.createEmptyBorder(10, 10, 10, 10)));
}
}

/**
* Listener que detecta cuando el deslizador asociado
* cambia su valor actual.
* Cuando se detecta cualquier cambio, lo que se hace
* es actualizar el color del panel con los nuevos valores
*/
private class CambioSelector implements ChangeListener {
@Override
public void stateChanged(ChangeEvent e) {
panelColor.setColor(panelSelectores.getColor());
}
}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SelectorColor();
}
});
}

}
« Última modificación: 11 de Noviembre 2020, 00:08 por Kabuto »
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

nikiton

  • Sin experiencia
  • *
  • Mensajes: 19
    • Ver Perfil
Re: ejercicio de java swing a desarrollar
« Respuesta #2 en: 11 de Noviembre 2020, 21:29 »
hola no estoy teniendo mucho tiempo pero subo lo que avance del ejercicio 1, faltaría la opción mostrar que la puedes programar en un jlabel o en una pestaña emergente, como tu prefieras, y agrupar los radiobuttom para que solo se seleccione uno, suerte
Pd: Trabajo con eclipce, se que en netbeans es mas facil trabajar con javaswing pero espero que te ayude

Código: [Seleccionar]

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JRadioButton;
import javax.swing.JButton;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Tarea1 extends JFrame {

/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField txtuno;
private JTextField txtdos;

ButtonGroup r = new ButtonGroup();


/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Tarea1 frame = new Tarea1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Tarea1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 324, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);

JLabel lblTitulo = new JLabel("Ingreso de Mascota");
lblTitulo.setFont(new Font("Tahoma", Font.PLAIN, 20));
lblTitulo.setForeground(Color.RED);
lblTitulo.setHorizontalAlignment(SwingConstants.TRAILING);

JLabel lbnombre = new JLabel("Nombre");

JLabel lbrut = new JLabel("Rut amo");

txtuno = new JTextField();
txtuno.setColumns(10);

txtdos = new JTextField();
txtdos.setColumns(10);

JLabel lbsexo = new JLabel("Sexo");

JRadioButton rbmacho = new JRadioButton("Macho");

JRadioButton rbhembra = new JRadioButton("Hembra");



JButton btmostrar = new JButton("Mostrar");
btmostrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

}
});

JButton btlimpiar = new JButton("Limpiar");
btlimpiar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
txtuno.setText(null);
txtdos.setText(null);
rbmacho.setSelected(false);
rbhembra.setSelected(false);
}
});
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(31)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addComponent(lblTitulo, GroupLayout.PREFERRED_SIZE, 216, GroupLayout.PREFERRED_SIZE)
.addGroup(gl_contentPane.createSequentialGroup()
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING, false)
.addComponent(lbnombre)
.addComponent(lbrut)
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(lbsexo)
.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(rbmacho))
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(24)
.addComponent(btmostrar)))
.addGroup(gl_contentPane.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
.addGap(24)
.addComponent(btlimpiar))
.addComponent(txtdos, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(txtuno, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGroup(gl_contentPane.createSequentialGroup()
.addComponent(rbhembra)
.addGap(25)))))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addContainerGap()
.addComponent(lblTitulo)
.addGap(27)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lbnombre)
.addComponent(txtuno, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(36)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lbrut)
.addComponent(txtdos, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(37)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(lbsexo)
.addComponent(rbmacho)
.addComponent(rbhembra))
.addGap(18)
.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
.addComponent(btmostrar)
.addComponent(btlimpiar))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
contentPane.setLayout(gl_contentPane);
}
}

nikiton

  • Sin experiencia
  • *
  • Mensajes: 19
    • Ver Perfil
Re: ejercicio de java swing a desarrollar
« Respuesta #3 en: 17 de Noviembre 2020, 04:42 »
No sé si aún te servirá, pero te subo el desarrollo del ejercicio1, de hecho me tocó hacer el mismo ejercicio y me acordé que lo leí en el foro, así que te subo mi desarrollo.


Código: [Seleccionar]
package swing;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ButtonGroup;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JRadioButton;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.SystemColor;

public class ejercicio9 extends JFrame {

    /**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
    ButtonGroup grupr = new ButtonGroup();
    private JLabel lbColor;

 

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    tarea2 frame = new ejercicio9();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

 

    /**
     * Create the frame.
     */
    public ejercicio9() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
       
        JLabel lbTitulo = new JLabel("Seleccione el Color Deseado");
        lbTitulo.setFont(new Font("Tahoma", Font.PLAIN, 15));
        lbTitulo.setForeground(Color.RED);
       
        JRadioButton rbRojo = new JRadioButton("Color Rojo");
        rbRojo.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                lbColor.setBackground(Color.red);
            }
        });
       
        JRadioButton rbVerde = new JRadioButton("Color Verde");
        rbVerde.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                lbColor.setBackground(Color.green);
            }
        });
       
        JRadioButton rbAzul = new JRadioButton("Color Azul");
        rbAzul.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                lbColor.setBackground(Color.blue);
            }
        });
       
        JRadioButton rbAmarillo = new JRadioButton("Color Amarillo");
        rbAmarillo.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                lbColor.setBackground(Color.yellow);
            }
        });
       
        //Agrupar los radiobutton
        grupr.add(rbRojo);
        grupr.add(rbVerde);
        grupr.add(rbAzul);
        grupr.add(rbAmarillo);
       
       
        lbColor = new JLabel("");
        lbColor.setOpaque(true);
        lbColor.setBackground(Color.WHITE);
        GroupLayout gl_contentPane = new GroupLayout(contentPane);
        gl_contentPane.setHorizontalGroup(
        gl_contentPane.createParallelGroup(Alignment.TRAILING)
        .addGroup(gl_contentPane.createSequentialGroup()
        .addGap(122)
        .addComponent(lbTitulo)
        .addContainerGap(123, Short.MAX_VALUE))
        .addGroup(gl_contentPane.createSequentialGroup()
        .addContainerGap()
        .addComponent(lbColor, GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE)
        .addPreferredGap(ComponentPlacement.UNRELATED)
        .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
        .addComponent(rbAzul)
        .addComponent(rbRojo)
        .addComponent(rbVerde)
        .addComponent(rbAmarillo))
        .addGap(38))
        );
        gl_contentPane.setVerticalGroup(
        gl_contentPane.createParallelGroup(Alignment.LEADING)
        .addGroup(gl_contentPane.createSequentialGroup()
        .addComponent(lbTitulo)
        .addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
        .addGroup(gl_contentPane.createSequentialGroup()
        .addGap(60)
        .addComponent(rbVerde)
        .addPreferredGap(ComponentPlacement.RELATED)
        .addComponent(rbAzul)
        .addPreferredGap(ComponentPlacement.UNRELATED)
        .addComponent(rbRojo)
        .addPreferredGap(ComponentPlacement.RELATED)
        .addComponent(rbAmarillo))
        .addGroup(gl_contentPane.createSequentialGroup()
        .addGap(15)
        .addComponent(lbColor, GroupLayout.PREFERRED_SIZE, 189, GroupLayout.PREFERRED_SIZE)))
        .addContainerGap(28, Short.MAX_VALUE))
        );
        contentPane.setLayout(gl_contentPane);
    }
    public Color getLblFondoBackground() {
        return lbColor.getBackground();
    }
    public void setLblFondoBackground(Color background) {
        lbColor.setBackground(background);
    }
}
 
« Última modificación: 07 de Febrero 2021, 11:26 por Ogramar »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".