EJERCICIOS PROGRAMACIÓN BÁSICA
1.
Calcular la suma de dos números. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio1
{
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el primer número: ");
int num1 = sc.nextInt();
System.out.println("Introduce
el segundo número: ");
int num2 = sc.nextInt();
int suma = num1 + num2;
System.out.println("El
resultado de la suma es: "+suma);
}
}
2.
Calcular el mayor de dos números. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio2 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el primer número: ");
int num1 = sc.nextInt();
System.out.println("Introduce
el segundo número: ");
int num2 = sc.nextInt();
int mayor=(num1 > num2) ? num1 : num2;
System.out.println("El número mayor es: "+mayor);
}
}
3.
Crea una tabla de multiplicar. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio3 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
un número: ");
int num = sc.nextInt();
for(int i=1; i<=10; i++) {
int producto = num*i;
System.out.println(num + " x
"+i+" = "+producto);
}
}
}
4.
Hallar la suma de números pares hasta N. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio4 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el límite: ");
int limite = sc.nextInt();
int suma =0;
for(int i=0; i<=limite; i+=2) {
suma+=i;
}
System.out.println("La suma
de números pares hasta "+limite+" es "+suma);
}
}
5.
Hallar la potencia de un número utilizando el método Math. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio5 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Inserta
la base: ");
double base=sc.nextDouble();
System.out.println("Inserta
el exponente: ");
double exponente=sc.nextDouble();
double potencia = Math.pow(base, exponente);
System.out.println("Potencia
de " + base + " elevado a " + exponente + " es:
" + potencia);
}
}
6.
Hallar la raíz cuadrada de un número utilizando el método Math. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio6 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Inserta
un número: ");
double num=sc.nextDouble();
double raiz = Math.sqrt(num);
System.out.println("La raíz
cuadrada de "+num+" es "+raiz);
}
}
7.
Hallar el valor absoluto utilizando el método Math. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio7 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Inserta
un número: ");
double num=sc.nextDouble();
//Hacemos
un casting a entero ya que le pasamos
como parámetro un número decimal.
int valorAbs = (int) Math.abs(num);
System.out.println("El valor
absoluto de "+num+" es "+valorAbs);
}
}
8.
Hallar el redondeo de un número utilizando el método Math. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio8 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Inserta
un número decimal: ");
double num=sc.nextDouble();
long numRed = Math.round(num);
System.out.println("El número
" + num + " redondeado es: " + numRed);
}
}
9.
Hallar el número máximo y mínimo utilizando el método Math. Ver solución
package ejerc;
public class Ejercicio9 {
public static void main(String[] args) {
int[] numeros = { 5, 10, -3,
8, 0 };
int maximo = Math.max(numeros[0], Math.max(numeros[1], Math.max(numeros[2], Math.max(numeros[3], numeros[4]))));
int minimo = Math.min(numeros[0], Math.min(numeros[1], Math.min(numeros[2], Math.min(numeros[3], numeros[4]))));
System.out.println("El máximo
es: " + maximo);
System.out.println("El mínimo
es: " + minimo);
}
}
10.
Uso de la clase String. Crea una frase; obtén la longitud de la frase; crea otra frase y concaténalas; compara ambas cadenas; convertir una de las frases a mayúsculas y minúsculas; obtener un carácter en una posición específica; buscar una subcadena; extraer una subcadena y reemplazar la ‘o’ por la ‘a’. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio10 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
// Crear una frase
System.out.println("Inserta
una frase: ");
String frase1 = sc.nextLine();
// Obtener la longitud
de la frase
int length = frase1.length();
System.out.println("Longitud:
" + length);
// Concatenar cadenas
System.out.println("Inserta
otra frase: ");
String frase2 = sc.nextLine();
String concatenated = frase1.concat(frase2);
System.out.println("Concatenada:
" + concatenated);
// Comparar cadenas
boolean areEqual = frase1.equals(frase2);
System.out.println("Iguales:
" + areEqual); // Salida: Iguales: true
// Convertir a mayúsculas
y minúsculas
String uppercase = frase1.toUpperCase();
String lowercase = frase2.toLowerCase();
System.out.println("Mayúsculas:
" + uppercase);
System.out.println("Minúsculas:
" + lowercase);
// Obtener un carácter
en una posición específica
char charAtIndex = frase1.charAt(7);
System.out.println("Carácter
en la posición 7: " + charAtIndex);
// Buscar una subcadena
int indexOfSubstring = frase1.indexOf("mundo"); //si en
la frase está la palabra 'mundo' u otra
System.out.println("Índice
de 'mundo': " + indexOfSubstring);
// Extraer una subcadena
String substring = frase1.substring(0,
4);
System.out.println("Subcadena:
" + substring);
// Reemplazar caracteres
String replaced = frase1.replace('o', 'a');
System.out.println("Reemplazada:
" + replaced);
}
}
11.
Verificar si un número es positivo, negativo o cero. Utiliza el condicional if.. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio11 {
public static void main(String[] args) {
Scanner
sc =new Scanner(System.in);
System.out.println("Introduce
un número: ");
int numero=sc.nextInt();
if (numero > 0) {
System.out.println("El número
es positivo.");
}
else if (numero < 0) {
System.out.println("El número
es negativo.");
}
else {
System.out.println("El número
es cero.");
}
}
}
12.
Determinar si un número es par o impar. Utiliza el condicional if. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio12 {
public static void main(String[] args) {
Scanner
sc =new Scanner(System.in);
System.out.println("Introduce
un número: ");
int numero=sc.nextInt();
if (numero % 2 == 0) {
System.out.println("El número
es par.");
}
else {
System.out.println("El número
es impar.");
}
}
}
13.
Comparar dos números y mostrar el mayor. Utiliza el condicional if. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio13 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el primer número: ");
int num1=sc.nextInt();
System.out.println("Introduce
el segundo número: ");
int num2=sc.nextInt();
if (num1 > num2) {
System.out.println("El
primer número es mayor: " + num1);
}
else if (num2 > num1) {
System.out.println("El
segundo número es mayor: " + num2);
}
else {
System.out.println("Los números
son iguales.");
}
}
}
14.
Verificar si una persona es mayor de edad. Utiliza el condicional if. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio14 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
la edad: ");
int edad=sc.nextInt();
if (edad >= 18) {
System.out.println("Es mayor
de edad.");
}
else {
System.out.println("Es menor
de edad.");
}
}
}
15.
Calcular el costo de un producto con descuento. Utiliza el condicional if. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio15 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el precio del producto: ");
double precioOriginal = sc.nextDouble();
final double descuento = 0.2; // 20% de
descuento
if (descuento > 0
&& descuento <= 1) {
double precioFinal = precioOriginal * (1 - descuento);
System.out.println("El
precio con descuento es: " + precioFinal);
}
else {
System.out.println("El
descuento no es válido.");
}
}
}
16.
Calificación numérica a calificación en letras. Dado un número que representa una calificación numérica del 0 al 10, convierte esta calificación a su equivalente en letras (A, B, C, D). Uso del condicional switch. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio16 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
la nota numérica: ");
int notaNumérica = sc.nextInt();
char notaLetra;
switch (notaNumérica) {
case 10:
case 9:
notaLetra = 'A';
break;
case 8:
notaLetra = 'B';
break;
case 7:
notaLetra = 'C';
break;
case 6:
notaLetra = 'D';
break;
default:
notaLetra = 'F';
break;
}
System.out.println("Calificación
en letra: " + notaLetra);
}
}
17.
Días de la semana. Dado un número del 1 al 7, que representa un día de la semana, imprime el nombre del día correspondiente. Utiliza el condicional switch. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio17 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el día de la semana en número: ");
int numDia = sc.nextInt();
String
nombreDia;
switch (numDia) {
case 1:
nombreDia = "Lunes";
break;
case 2:
nombreDia = "Martes";
break;
case 3:
nombreDia = "Miércoles";
break;
case 4:
nombreDia = "Jueves";
break;
case 5:
nombreDia = "Viernes";
break;
case 6:
nombreDia = "Sábado";
break;
case 7:
nombreDia = "Domingo";
break;
default:
nombreDia = "Día inválido";
break;
}
System.out.println("Día de
la semana: " + nombreDia);
}
}
18.
Calculadora básica. Realiza una operación aritmética simple (+, -, *, /) en base a dos números y un operador. Uso de switch. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio18 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
System.out.println("Introduce
el primer número: ");
double num1 = sc.nextDouble();
System.out.println("Introduce
el operador: +, -, *, /");
char operador=sc.next().charAt(0);
System.out.println("Introduce
el segundo número: ");
double num2 = sc.nextDouble();
double resultado;
switch (operador) {
case '+':
resultado = num1 + num2;
break;
case '-':
resultado = num1 - num2;
break;
case '*':
resultado = num1 * num2;
break;
case '/':
resultado = num1 / num2;
break;
default:
System.out.println("Operador
inválido");
return;
}
System.out.println("Resultado:
" + resultado);
}
}
19.
Crea un contador ascendente desde 1 hasta un número dado. Uso del bucle while. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio19 {
public static void main(String[] args) {
Scanner
sc = new Scanner (System.in);
System.out.println("Introduce
un límite ");
int limite = sc.nextInt();
int contador = 1;
while (contador <= limite) {
System.out.println(contador);
contador++;
}
}
}
20.
Sumar los números pares dentro de un rango dado. Uso de while. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio20 {
public static void main(String[] args) {
Scanner
sc = new Scanner
(System.in);
System.out.println("Introduce
un límite ");
int limite = sc.nextInt();
int suma = 0;
int numero = 2;
while (numero <= limite) {
suma += numero;
numero += 2;
}
System.out.println("La suma
de los números pares es: " + suma);
}
}
21.
Adivinar el número. El programa tiene que generar un número aleatorio y el usuario debe adivinarlo. Uso de while. Ver solución
package ejerc;
import
java.util.Random;
import
java.util.Scanner;
public class Ejercicio21 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int numeroAdivinar = random.nextInt(100) +
1;
int intentos = 0;
int intento;
System.out.println("¡Adivina
el número entre 1 y 100!");
while (true) {
intentos++;
System.out.print("Intento
#" + intentos + ": ");
intento = scanner.nextInt();
if (intento == numeroAdivinar) {
System.out.println("¡Correcto!
¡Adivinaste el número en " + intentos + " intentos!");
break;
} else if (intento < numeroAdivinar) {
System.out.println("El número
es mayor.");
} else {
System.out.println("El número
es menor.");
}
}
}
}
22.
Suma de números. El programa ha de sumar números ingresados por el usuario hasta que el usuario ingrese un valor negativo. Uso del bucle do… while. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio22 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int suma = 0;
int numero;
do {
System.out.print("Ingresa
un número (ingresa un negativo para terminar): ");
numero = scanner.nextInt();
suma += numero;
} while (numero >= 0);
System.out.println("La suma
de los números ingresados es: " + suma);
}
}
23.
Adivina el número. El programa ha de generar un número aleatorio y le pide al usuario que adivine ese número. Uso del bucle do… while. Ver solución
package ejerc;
import
java.util.Scanner;
import
java.util.Random;
public class Ejercicio23 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int numeroAdivinar = random.nextInt(100) +
1; //
Número aleatorio entre 1 y 100
int intentos = 0;
int intento;
do {
System.out.print("Adivina
el número (entre 1 y 100): ");
intento = scanner.nextInt();
intentos++;
if (intento < numeroAdivinar) {
System.out.println("El número
es mayor.");
} else if (intento > numeroAdivinar) {
System.out.println("El número
es menor.");
}
} while (intento != numeroAdivinar);
System.out.println("¡Correcto!
Adivinaste el número en " + intentos + " intentos.");
}
}
24.
El programa ha de validar la entrada del usuario para asegurarse de que ingrese un número positivo. Uso del bucle do… while. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio24 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numero;
do {
System.out.print("Ingresa
un número positivo: ");
numero = scanner.nextInt();
if (numero <= 0) {
System.out.println("Número
no válido. Debe ser positivo.");
}
} while (numero <= 0);
System.out.println("Número válido
ingresado: " + numero);
}
}
25.
Imprimir número del 1 al 5. Uso del bucle for. Ver solución
package ejerc;
public class Ejercicio25 {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println(i);
}
}
}
26.
Calcular la suma de los primeros 10 números naturales. Uso del bucle for. Ver solución
package ejerc;
public class Ejercicio26 {
public static void main(String[] args) {
int suma = 0;
for (int i = 1; i <= 10; i++) {
suma += i;
}
System.out.println("La suma
es: " + suma);
}
}
27.
Imprimir los números pares del 2 al 20. Uso del bucle for. Ver solución
package ejerc;
public class Ejercicio27 {
public static void main(String[] args) {
for (int i = 2; i <= 20; i += 2) {
System.out.println(i);
}
}
}
28.
Calcular el factorial de un número. Uso del bucle for. Ver solución
package ejerc;
import
java.util.Scanner;
public class Ejercicio28 {
public static void main(String[] args) {
Scanner
sc =new Scanner(System.in);
System.out.println("Introduce
un número");
int numero = sc.nextInt();
int factorial = 1;
for (int i = 1; i <= numero; i++) {
factorial *= i;
}
System.out.println("El
factorial de " + numero + " es: " + factorial);
}
}
EJERCICIOS ARRAYS
1.
Suma de elementos de un array. Ver solución
package ejerc;
public class Ejercicio1 {
public static void main(String[] args) {
int[] numeros = { 5, 10, 15,
20, 25 };
int suma = 0;
for (int i = 0; i < numeros.length; i++) {
suma += numeros[i];
}
System.out.println("La suma
de los elementos es: " + suma);
}
}
2.
Encontrar el elemento máximo en un array. Ver solución
package ejerc;
public class Ejercicio2 {
public static void main(String[] args) {
int[] numeros = { 32, 15, 74,
29, 46 };
int maximo = numeros[0];
for (int i = 1; i < numeros.length; i++) {
if (numeros[i] > maximo) {
maximo = numeros[i];
}
}
System.out.println("El
elemento máximo es: " + maximo);
}
}
3.
Copiar elementos de un array a otro. Ver solución
package ejerc;
public class Ejercicio3 {
public static void main(String[] args) {
int[] numerosOriginales = { 3, 6, 9,
12, 15 };
int[] numerosCopia = new int[numerosOriginales.length];
for (int i = 0; i < numerosOriginales.length; i++) {
numerosCopia[i] = numerosOriginales[i];
}
System.out.println("Elementos
en el array copia:");
for (int num : numerosCopia) {
System.out.print(num + " ");
}
}
}
4.
Suma de matrices. Ver solución
package ejerc;
public class Ejercicio4 {
public static void main(String[] args) {
int[][] matriz1 = {{1, 2, 3},
{4, 5, 6}, {7, 8, 9}};
int[][] matriz2 = {{9, 8, 7},
{6, 5, 4}, {3, 2, 1}};
int filas = matriz1.length;
int columnas = matriz1[0].length;
int[][] resultado = new int[filas][columnas];
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
resultado[i][j] = matriz1[i][j] + matriz2[i][j];
}
}
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
System.out.print(resultado[i][j] + " ");
}
System.out.println();
}
}
}
5.
Crear una matriz transpuesta. Ver solución
package ejerc;
public class Ejercicio5 {
public static void main(String[] args) {
int[][] matriz = {{1, 2, 3},
{4, 5, 6}, {7, 8, 9}};
int filas = matriz.length;
int columnas = matriz[0].length;
int[][] transpuesta = new int[columnas][filas];
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
transpuesta[j][i] = matriz[i][j];
}
}
for (int i = 0; i < columnas; i++) {
for (int j = 0; j < filas; j++) {
System.out.print(transpuesta[i][j] + " ");
}
System.out.println();
}
}
}
6.
Crear una matriz identidad. Una matriz identidad es matriz cuadrada donde todos sus elementos son ceros (0) menos los elementos de la diagonal principal que son unos (1). Ver solución
package ejerc;
public class Ejercicio6 {
public static void main(String[] args) {
int n = 4;
int[][] identidad = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
identidad[i][j] = 1;
} else {
identidad[i][j] = 0;
}
System.out.print(identidad[i][j] + " ");
}
System.out.println();
}
}
}
EJERCICIOS PROGRAMACIÓN ORIENTADA A OBJETOS (POO)
1.
Crear una clase Persona que contenga dos variables: nombre y edad, luego un método para mostrar el nombre y edad de varios objetos de la clase Persona. Ver solución
package poo;
import
java.util.Scanner;
public class Ejercicio1 {
public static void main(String[] args) {
Scanner
sc = new Scanner(System.in);
Persona
persona1 = new Persona();
System.out.println("Introduce
tú nombre: ");
persona1.nombre = sc.next();
System.out.println("Introduce
tú edad: ");
persona1.edad = sc.nextInt();
persona1.saludar();
Persona persona2 = new Persona();
System.out.println("Introduce
tú nombre: ");
persona2.nombre = sc.next();
System.out.println("Introduce
tú edad: ");
persona2.edad = sc.nextInt();
persona2.saludar();
}
}
class Persona {
String nombre;
int edad;
void saludar() {
System.out.println("Hola,
soy " + nombre + " y tengo " + edad + " años.");
}
}
2.
Crear dos clases que a su vez hereden de una tercera clase y compartan un mismo método, es decir, que se sobrescriba el método en las tres clases. Ver solución
package poo;
public class Ejercicio2 {
public static void main(String[] args) {
Animal
animal1 = new Animal();
animal1.hacerSonido();
Perro perro1 = new Perro();
perro1.hacerSonido();
Gato gato1 = new Gato();
gato1.hacerSonido();
}
}
class Animal {
void hacerSonido() {
System.out.println("El
animal hace un sonido.");
}
}
class Perro extends Animal {
@Override
void hacerSonido() {
System.out.println("El perro
ladra.");
}
}
class Gato extends Animal {
@Override
void hacerSonido() {
System.out.println("El gato
maulla.");
}
3.
Crear una clase con su constructor, las variables encapsuladas y varios métodos. Ver solución
package poo;
public class Ejercicio3 {
public static void main(String[] args) {
Libro
libro1 = new Libro("Harry
Potter", "J.K. Rowling");
System.out.println("Título:
" + libro1.getTitulo());
System.out.println("Autor:
" + libro1.getAutor());
}
}
class Libro {
private String titulo;
private String autor;
public Libro(String titulo, String autor) {
this.titulo = titulo;
this.autor = autor;
}
public String
getTitulo() {
return titulo;
}
public String
getAutor() {
return autor;
}
}
4.
Supongamos que tienes una clase llamada “Persona” con los atributos “nombre” y “edad”, implementa los métodos getter y setter para estos atributos. Ver solución
package poo;
public class Ejercicio4 {
public static void main(String[] args) {
Persona
persona = new Persona();
// Usando el setter para
asignar valores
persona.setNombre("Paco");
persona.setEdad(25);
// Usando el getter para
obtener valores
System.out.println("Nombre:
" + persona.getNombre());
System.out.println("Edad:
" + persona.getEdad());
}
}
class Persona {
private String nombre;
private int edad;
// Getter para el atributo
'nombre'
public String
getNombre() {
return nombre;
}
// Setter para el atributo
'nombre'
public void
setNombre(String nombre) {
this.nombre = nombre;
}
// Getter para el atributo
'edad'
public int getEdad() {
return edad;
}
// Setter para el atributo
'edad'
public void setEdad(int edad) {
if (edad >= 0) {
this.edad = edad;
} else {
System.out.println("La edad
no puede ser negativa.");
}
}
5.
Supongamos que tienes una clase llamada “Persona” con los siguientes atributos: “nombre”, “edad” y “sexo”. Implementa una sobrecarga de constructores para la clase “Persona”. Ver solución
package poo;
public class Ejercicio5 {
public static void main(String[] args) {
Persona
persona1 = new Persona(); // Sin nombre,
edad 0, sexo desconocido
Persona persona2 = new Persona("Juan", 25); // Nombre:
Juan, edad: 25, sexo desconocido
Persona persona3 = new Persona("María", 30, "Femenino"); // Nombre:
María, edad: 30, sexo: Femenino
// Imprimir información de
las personas
System.out.println("Persona
1: " + persona1.getNombre() + ", " + persona1.getEdad() + ", " + persona1.getSexo());
System.out.println("Persona
2: " + persona2.getNombre() + ", " + persona2.getEdad() + ", " + persona2.getSexo());
System.out.println("Persona
3: " + persona3.getNombre() + ", " + persona3.getEdad() + ", " + persona3.getSexo());
}
}
class Persona {
private String nombre;
private int edad;
private String sexo;
// Constructor sin parámetros
public Persona3() {
this.nombre = "Sin
nombre";
this.edad = 0;
this.sexo = "Desconocido";
}
// Constructor con nombre
y edad
public Persona3(String
nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
this.sexo = "Desconocido";
}
// Constructor con nombre,
edad y sexo
public Persona3(String
nombre, int edad, String sexo) {
this.nombre = nombre;
this.edad = edad;
this.sexo = sexo;
}
// Getter para el atributo
'nombre'
public String
getNombre() {
return nombre;
}
// Getter para el atributo
'edad'
public int getEdad() {
return edad;
}
// Getter para el atributo
'edad'
public String getSexo() {
return
sexo;
}
}
6.
Supongamos que tenemos una jerarquía de clases que representa diferentes tipos de animales. En el método main crear un array de objetos de tipo Animal que pueden contener instancias de Perro, Gato y Vaca. Luego llamar al método hacerSonido() en cada uno de ellos, y utilizar el polimorfismo que se encargará de ejecutar la versión correspondiente de ese método para cada tipo de animal. Ver solución
package poo;
public class Ejercicio6 {
public static void main(String[] args) {
Animal[] animales = new Animal[3];
animales[0] = new Perro2();
animales[1] = new Gato2();
animales[2] = new Vaca2();
for (Animal
animal : animales) {
animal.hacerSonido();
}
}
}
class Animal {
public void hacerSonido() {
System.out.println("Sonido
desconocido");
}
}
class Perro extends Animal {
@Override
public void hacerSonido() {
System.out.println("Woof
woof");
}
}
class Gato extends Animal {
@Override
public void hacerSonido() {
System.out.println("Miau");
}
}
class Vaca extends Animal {
@Override
public void hacerSonido() {
System.out.println("Muuu");
}
}
7.
Supongamos que tenemos una clase padre “Animal” y una subclase “Perro” que comparten un método. Realizar un casting de una subclase a una superclase y un casting de una superclase a una subclase (con instanceof para evitar excepciones. Ver solución
package poo;
public class Ejercicio7 {
public static void main(String[] args) {
// Casting de
una subclase a una superclase
Perro
perro = new Perro();
Animal
animal = (Animal) perro;
animal.hacerSonido(); // Salida:
El perro hace: ¡Guau!
//Casting de
una superclase a una subclase
Animal
animal2 = new Animal();
if (animal instanceof Perro) {
Perro perro2 = (Perro) animal;
perro2.hacerSonido();
}
else {
System.out.println("El
animal no es un perro");
}
}
}
class Animal3 {
public void hacerSonido() {
System.out.println("Haciendo
un sonido indefinido");
}
}
class Perro3 extends Animal3 {
public void hacerSonido() {
System.out.println("El perro
hace: ¡Guau!");
}
}
8.
Creamos una clase abstracta llamada Figura que servirá como base para otras clases de figuras geométricas concretas como Circulo y Rectangulo. Cada figura tiene un método abstracto para calcular su área.Ver solución
package poo;
public class Ejercicio8 {
public static void main(String[] args) {
Circulo circulo = new Circulo(5);
System.out.println("Área del
círculo: " + circulo.calcularArea());
Rectangulo rectangulo = new Rectangulo(4,
6);
System.out.println("Área del
rectángulo: " + rectangulo.calcularArea());
}
}
abstract class Figura {
abstract double calcularArea();
}
class Circulo extends Figura {
double radio;
Circulo(double radio) {
this.radio = radio;
}
@Override
double calcularArea()
{
return Math.PI * radio * radio;
}
}
class Rectangulo extends Figura {
double base;
double altura;
Rectangulo(double base, double altura) {
this.base = base;
this.altura = altura;
}
@Override
double calcularArea()
{
return base * altura;
}
}
9.
Crear y utilizar un tipo enumerado en Java para los días de la semana, que nos indique si es laboral o fin de semana. Ver solución
package poo;
public enum DiaSemana {
LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO
}
package poo;
import
java.util.Scanner;
public class Ejercicio9 {
public static void main(String[] args) {
Scanner
sn = new Scanner(System.in);
System.out.println("Escribe
un dia de la semana");
String dia = sn.next();
DiaSemana
diaS = DiaSemana.valueOf(dia.toUpperCase());
switch(diaS){
case LUNES:
case MARTES:
case MIERCOLES:
case JUEVES:
case VIERNES:
System.out.println("El dia
"+diaS.name().toLowerCase()+" es laborable");
break;
case SABADO:
case DOMINGO:
System.out.println("El dia
"+diaS+" no es laborable");
break;
}
}
EJERCICIOS INTERFACES Y CLASES INTERNAS
1.
Crea una interfaz llamada Figura que tenga métodos para calcular el área y el perímetro de una figura geométrica. Luego, implementa esta interfaz en clases concretas como Círculo, Triángulo y Rectángulo. Calcula el área y el perímetro de cada figura y muestra los resultados. Ver solución
package interfaces;
public interface Figura {
double calcularArea();
double
calcularPerimetro();
}
package interfaces;
public class Ejercicio1 {
public static void main(String[] args) {
Figura
circulo = new Circulo(5);
System.out.println("Área del
círculo: " + circulo.calcularArea());
System.out.println("Perímetro
del círculo: " + circulo.calcularPerimetro());
Figura triangulo = new Triangulo(4,
6);
System.out.println("Área del
triángulo: " + triangulo.calcularArea());
System.out.println("Perímetro
del triángulo: " + triangulo.calcularPerimetro());
Figura rectangulo = new Rectangulo(3,
7);
System.out.println("Área del
rectángulo: " + rectangulo.calcularArea());
System.out.println("Perímetro
del rectángulo: " + rectangulo.calcularPerimetro());
}
}
class Circulo implements Figura {
private double radio;
public Circulo(double radio) {
this.radio = radio;
}
@Override
public double calcularArea()
{
return Math.PI * radio * radio;
}
@Override
public double
calcularPerimetro() {
return 2 * Math.PI * radio;
}
}
class Triangulo implements Figura {
private double base;
private double altura;
public Triangulo(double base, double altura) {
this.base = base;
this.altura = altura;
}
@Override
public double calcularArea()
{
return (base * altura) / 2;
}
@Override
public double
calcularPerimetro() {
// No se puede calcular
el perímetro solo con base y altura
return Double.NaN;
}
}
class Rectangulo implements Figura {
private double ladoA;
private double ladoB;
public Rectangulo(double ladoA, double ladoB) {
this.ladoA = ladoA;
this.ladoB = ladoB;
}
@Override
public double calcularArea()
{
return ladoA * ladoB;
}
@Override
public double
calcularPerimetro() {
return 2 * (ladoA + ladoB);
}
}
2.
Crea una interfaz llamada Motor que tenga métodos para encender y apagar un motor. Luego, implementa esta interfaz en clases concretas como MotorGasolina y MotorElectrico. Crea una clase Vehiculo que tenga un atributo de tipo Motor y métodos para encender y apagar el motor.Ver solución
package interfaces;
public interface Motor {
void encender();
void apagar();
}
package interfaces;
public class Ejercicio2 {
public static void main(String[] args) {
MotorGasolina
motorGasolina = new
MotorGasolina();
Vehiculo vehiculoGasolina = new Vehiculo(motorGasolina);
vehiculoGasolina.encenderMotor();
vehiculoGasolina.apagarMotor();
MotorElectrico motorElectrico = new
MotorElectrico();
Vehiculo vehiculoElectrico = new Vehiculo(motorElectrico);
vehiculoElectrico.encenderMotor();
vehiculoElectrico.apagarMotor();
}
}
class MotorGasolina implements Motor {
@Override
public void encender() {
System.out.println("Motor de
gasolina encendido");
}
@Override
public void apagar() {
System.out.println("Motor de
gasolina apagado");
}
}
class MotorElectrico implements Motor {
@Override
public void encender() {
System.out.println("Motor eléctrico
encendido");
}
@Override
public void apagar() {
System.out.println("Motor eléctrico
apagado");
}
}
class Vehiculo {
private Motor motor;
public Vehiculo(Motor motor) {
this.motor = motor;
}
public void encenderMotor()
{
motor.encender();
}
public void apagarMotor() {
motor.apagar();
}
}
3.
Crear una clase interna regularVer solución
package clas_inter;
public class Ejercicio3 {
public static void main(String[] args) {
ClaseExterna externa = new ClaseExterna();
externa.usarClaseInterna();
}
}
class ClaseExterna {
private int datoExterno = 10;
public class ClaseInterna {
public void
mostrarDatoExterno() {
System.out.println("Dato
externo: " + datoExterno);
}
}
public void
usarClaseInterna() {
ClaseInterna interna = new ClaseInterna();
interna.mostrarDatoExterno();
}
}
4.
Crear una clase interna estática.Ver solución
package clas_inter;
public class Ejercicio4 {
public static void main(String[] args) {
ClaseExterna2.usarClaseInterna();
}
}
class ClaseExterna2 {
private static int datoExterno = 10;
public static class ClaseInterna {
public void
mostrarDatoExterno() {
System.out.println("Dato
externo: " + datoExterno);
}
}
public static void
usarClaseInterna() {
ClaseInterna interna = new ClaseInterna();
interna.mostrarDatoExterno();
}
}
5.
Crear una clase local.Ver solución
package clas_inter;
public class Ejercicio5 {
public static void main(String[] args) {
ClaseExterna3 externa = new
ClaseExterna3();
externa.usarClaseLocal();
}
}
class ClaseExterna3 {
private int datoExterno = 10;
public void
usarClaseLocal() {
class ClaseLocal {
public void
mostrarDatoExterno() {
System.out.println("Dato
externo: " + datoExterno);
}
}
ClaseLocal local = new ClaseLocal();
local.mostrarDatoExterno();
}
}
EJERCICIOS INTRODUCCIÓN A LAS APLICACIONES GRÁFICAS SWING
1.
Crear una ventana, marco o frame. Ver solución
package graf;
import javax.swing.*;
public class Ejercicio1 {
public static void main(String[] args) {
MiVentana
ventana = new MiVentana();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setVisible(true);
}
}
class MiVentana
extends JFrame {
public MiVentana() {
setTitle("Mi
Ventana");
setBounds(400,
300, 300, 300);
}
}
2.
Al ejecutar la ventana aparezca en el centro de la pantalla.Ver solución
package graf;
import javax.swing.*;
import java.awt.*;
public class Ejercicio2 {
public static void main(String[] args) {
SwingUtilities.invokeLater(()
-> crearVentana());
}
public static void crearVentana()
{
JFrame ventana = new JFrame("Ventana
Centrada");
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setSize(400, 300);
// Obtener dimensiones de
la pantalla
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// Calcular la posición
para centrar la ventana
int ventanaX = (screenSize.width - ventana.getWidth()) /
2;
int ventanaY = (screenSize.height - ventana.getHeight()) /
2;
ventana.setLocation(ventanaX, ventanaY);
ventana.setVisible(true);
}
}
3.
Crear una ventana donde aparezca un texto: “Aprendiendo a programar con Java”Ver solución
package graf;
import
java.awt.Graphics;
import javax.swing.*;
public class Ejercicio3 {
public static void main(String[] args) {
VentanaConTexto
ventana=new
VentanaConTexto();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class VentanaConTexto
extends JFrame {
public
VentanaConTexto() {
setVisible(true);
setBounds(400,
300, 300, 300);
setTitle("Ventana con texto");
Lamina milamina=new Lamina();
add(milamina);
}
}
class Lamina extends JPanel {
public void
paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Aprendiendo
a programar con Java", 50, 50);
}
}
4.
Crear un circulo.Ver solución
package graf;
import javax.swing.*;
import java.awt.*;
public class Ejercicio4 {
public static void main(String[] args) {
Circulo
micirculo = new Circulo();
micirculo.setVisible(true);
}
}
class Circulo extends JFrame {
public Circulo() {
setTitle("Dibujo de un Círculo");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel()
{
@Override
protected void
paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillOval(100, 100, 200, 200);
}
};
add(panel);
}
5.
Crear un rectángulo.Ver solución
package graf;
import javax.swing.*;
import java.awt.*;
public class Ejercicio5 {
public static void main(String[] args) {
Rectangulo
mirectangulo = new Rectangulo();
mirectangulo.setVisible(true);
}
}
class Rectangulo
extends JFrame {
public Rectangulo() {
setTitle("Dibujo de un Rectángulo");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel()
{
@Override
protected void
paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(100, 100, 200, 150);
}
};
add(panel);
}
6.
Crear un frame con una frase con un formato de letra y tamaño.Ver solución
package graf;
import javax.swing.*;
import java.awt.*;
import java.awt.Font;
public class Ejercicio6 {
public static void main(String[] args) {
Fuentes
fuente = new Fuentes();
}
}
class Fuentes extends JFrame {
public Fuentes() {
setTitle("Ejemplo de Fuentes");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
// Crear un objeto
de fuente
Font font = new Font("Arial", Font.BOLD, 24);
// Crear un componente
de etiqueta con la fuente personalizada
JLabel label = new JLabel("Aprendiendo
a programar en Java");
label.setFont(font);
// Agregar la etiqueta
al marco
add(label);
setVisible(true);
}
EJERCICIOS EVENTOS
1.
Crea un evento de click de botón, que aparezca una ventana de JOptionPane en la cual indique que has pulsado el botón. Ver solución
package even;
import javax.swing.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
public class Ejercicio1 {
public static void main(String[] args) {
VentanaEventoBoton ventana = new
VentanaEventoBoton();
ventana.setVisible(true);
}
}
class VentanaEventoBoton
extends JFrame {
private JButton button;
public
VentanaEventoBoton() {
setTitle("Evento de Botón");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
button = new JButton("Haz
clic");
button.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "¡Botón
clickeado!");
}
});
add(button);
}
}
2.
Crea un evento de ventana, al pulsar el botón de Cerrar muestre una ventana de JOptionPane que indique: “Ventana cerrada”.Ver solución
package even;
import javax.swing.*;
import
java.awt.event.WindowAdapter;
import
java.awt.event.WindowEvent;
public class Ejercicio2 {
public static void main(String[] args) {
VentanaEventoCierre
ventana = new
VentanaEventoCierre();
ventana.setVisible(true);
}
}
class VentanaEventoCierre
extends JFrame {
public
VentanaEventoCierre() {
setTitle("Evento de Cierre de
Ventana");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{
public void
windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(null, "Ventana
cerrada");
System.exit(0);
}
});
}
3.
Crea un evento de teclado, al pulsar una tecla aparezca una ventana de JOptionPane informando de la tecla que has pulsado.Ver solución
package even;
import javax.swing.*;
import
java.awt.event.KeyEvent;
import
java.awt.event.KeyListener;
public class Ejercicio3 {
public static void main(String[] args) {
VentanaEventoTeclado
ventana = new
VentanaEventoTeclado();
ventana.setVisible(true);
}
}
class VentanaEventoTeclado
extends JFrame {
private JTextField textField;
public
VentanaEventoTeclado() {
setTitle("Evento de Teclado");
setSize(300, 200);
textField = new JTextField();
textField.addKeyListener(new KeyListener() {
public void
keyTyped(KeyEvent e) {
}
public void
keyPressed(KeyEvent e) {
}
public void
keyReleased(KeyEvent e) {
JOptionPane.showMessageDialog(null, "Tecla
presionada: " + e.getKeyChar());
}
});
add(textField);
}
}
EJERCICIOS LAYOUTS
1.
Utiliza el layout BorderLayout para organizar los componentes en cinco regiones diferentes: norte, sur, este, oeste y centro. Ver solución
package lay;
import javax.swing.*;
import java.awt.*;
public class Ejercicio1 {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo
BorderLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new
BorderLayout());
frame.add(new JButton("Norte"), BorderLayout.NORTH);
frame.add(new JButton("Sur"), BorderLayout.SOUTH);
frame.add(new JButton("Este"), BorderLayout.EAST);
frame.add(new JButton("Oeste"), BorderLayout.WEST);
frame.add(new JButton("Centro"), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
2.
Utiliza el layout GridLayout para organizar los componentes en una cuadrícula con un número específico de filas y columnas.Ver solución
package lay;
import javax.swing.*;
import java.awt.*;
public class Ejercicio2 {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo
GridLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(3,
3));
for (int i = 1; i <= 9; i++) {
frame.add(new JButton("Botón
" + i));
}
frame.pack();
frame.setVisible(true);
}
3.
Crea un evento de teclado, al pulsar una tecla aparezca una ventana de JOptionPane informando de la tecla que has pulsado.Ver solución
package lay;
import javax.swing.*;
import java.awt.*;
public class Ejercicio3 {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejemplo
FlowLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
for (int i = 1; i <= 10; i++) {
frame.add(new JButton("Botón
" + i));
}
frame.pack();
frame.setVisible(true);
}
}
EJERCICIOS COMPONENTES SWING
1.
Validar si un mail está correctamente escrito o no. El mail se ha de introducir dentro de un campo de texto y ha de informar la aplicación si es válido o no. Ver solución
package swing;
import javax.swing.*;
import java.awt.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.util.regex.Matcher;
import
java.util.regex.Pattern;
public class Ejercicio1 {
public static void main(String[] args) {
ValidarEmail
mail = new ValidarEmail();
mail.setVisible(true);
}
}
class ValidarEmail
extends JFrame {
private JTextField emailTextField;
private JLabel resultLabel;
public ValidarEmail()
{
setTitle("Validación de Correo
Electrónico");
setSize(300, 150);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,
1));
JLabel label = new JLabel("Ingrese
un correo electrónico:");
emailTextField = new JTextField(20);
JButton validateButton = new JButton("Validar");
resultLabel = new JLabel();
validateButton.addActionListener(new
ActionListener() {
@Override
public void
actionPerformed(ActionEvent e) {
String email = emailTextField.getText();
if (isValidEmail(email)) {
resultLabel.setText("Correo
electrónico válido.");
resultLabel.setForeground(Color.GREEN);
} else {
resultLabel.setText("Correo
electrónico inválido.");
resultLabel.setForeground(Color.RED);
}
}
});
panel.add(label);
panel.add(emailTextField);
panel.add(validateButton);
add(panel, BorderLayout.CENTER);
add(resultLabel, BorderLayout.SOUTH);
}
private boolean
isValidEmail(String email) {
String emailRegex = "^[A-Za-z0-9+_.-]+@(.+)$";
Pattern pattern = Pattern.compile(emailRegex);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
}
2.
Crear una aplicación que contenga un área de texto en el cuál podamos escribir y el texto convertirlo a negrita o cursiva.Ver solución
package swing;
import javax.swing.*;
import java.awt.*;
import
java.awt.event.*;
public class Ejercicio2 {
public static void main(String[] args) {
EditorTexto
editor = new EditorTexto();
editor.setVisible(true);
}
}
class EditorTexto
extends JFrame implements ActionListener
{
private JTextArea textArea;
private JCheckBox boldCheckBox;
private JCheckBox italicCheckBox;
public EditorTexto() {
setTitle("Editor de texto");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
boldCheckBox = new JCheckBox("Negrita");
italicCheckBox = new JCheckBox("Cursiva");
JPanel checkBoxPanel = new JPanel();
checkBoxPanel.add(boldCheckBox);
checkBoxPanel.add(italicCheckBox);
getContentPane().add(checkBoxPanel, BorderLayout.NORTH);
boldCheckBox.addActionListener(this);
italicCheckBox.addActionListener(this);
}
@Override
public void
actionPerformed(ActionEvent e) {
int style = Font.PLAIN;
if (boldCheckBox.isSelected()) {
style |= Font.BOLD;
}
if (italicCheckBox.isSelected()) {
style |= Font.ITALIC;
}
Font font = textArea.getFont();
Font newFont = new Font(font.getName(), style, font.getSize());
textArea.setFont(newFont);
}
3.
Crea una aplicación con tres checkbox y un botón, al seleccionar un checkbox y pulsar el botón que muestre en una ventana la descripción del checkbox seleccionado.Ver solución
package swing;
import javax.swing.*;
import java.awt.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
public class Ejercicio3 {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void
createAndShowGUI() {
JFrame frame = new JFrame("Ejercicio
Checkbox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,
1)); //
3 filas, 1 columna
JCheckBox checkBox1 = new JCheckBox("Checkbox
1");
JCheckBox checkBox2 = new JCheckBox("Checkbox
2");
JCheckBox checkBox3 = new JCheckBox("Checkbox
3");
panel.add(checkBox1);
panel.add(checkBox2);
panel.add(checkBox3);
JButton showStatusButton = new JButton("Mostrar
estado");
showStatusButton.addActionListener(new
ActionListener() {
@Override
public void
actionPerformed(ActionEvent e) {
StringBuilder status = new
StringBuilder();
status.append("Checkbox
1: ").append(checkBox1.isSelected()).append("\n");
status.append("Checkbox
2: ").append(checkBox2.isSelected()).append("\n");
status.append("Checkbox
3: ").append(checkBox3.isSelected()).append("\n");
JOptionPane.showMessageDialog(frame, status.toString(), "Estado
Checkbox", JOptionPane.INFORMATION_MESSAGE);
}
});
frame.add(panel, BorderLayout.CENTER);
frame.add(showStatusButton, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
}
4.
Crear una aplicación similar al ejercicio anterior pero en lugar de tres checkbox van a ser tres jradiobutton y un botón, al seleccionar un jradiobutton y pulsar el botón que muestre la descripción del jradiobutton seleccionado.Ver solución
package swing;
import javax.swing.*;
import java.awt.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
public class Ejercicio4 {
public static void main(String[] args) {
JRadioButtonEjercicio
jradio = new
JRadioButtonEjercicio();
jradio.setVisible(true);
}
}
class JRadioButtonEjercicio
extends JFrame {
private JRadioButton option1, option2, option3;
private JButton submitButton;
private JLabel resultLabel;
public
JRadioButtonEjercicio() {
setTitle("Ejercicio
JRadioButton");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
option1 = new JRadioButton("Opción
1");
option2 = new JRadioButton("Opción
2");
option3 = new JRadioButton("Opción
3");
ButtonGroup group = new ButtonGroup();
group.add(option1);
group.add(option2);
group.add(option3);
submitButton = new JButton("Enviar");
resultLabel = new JLabel("Selecciona
una opción y pulsa en Enviar.");
submitButton.addActionListener(new
ActionListener() {
@Override
public void
actionPerformed(ActionEvent e) {
String result = "Selecciona
opción: ";
if (option1.isSelected()) {
result += "Opción
1";
} else if (option2.isSelected()) {
result += "Opción
2";
} else if (option3.isSelected()) {
result += "Opción
3";
} else {
result += "No has seleccionado ninguna opción";
}
resultLabel.setText(result);
}
});
setLayout(new GridLayout(5,
1));
add(option1);
add(option2);
add(option3);
add(submitButton);
add(resultLabel);
setVisible(true);
}
5.
Crear un combox.Ver solución
package swing;
import javax.swing.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
public class Ejercicio5 {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejercicio
ComboBox");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JPanel panel = new JPanel();
JLabel label = new JLabel("Selecciona
una opción:");
panel.add(label);
String[] opciones = {"Opción
1", "Opción 2", "Opción 3"};
JComboBox<String> comboBox = new
JComboBox<>(opciones);
panel.add(comboBox);
JButton boton = new JButton("Mostrar
selección");
boton.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent e) {
String seleccion = (String) comboBox.getSelectedItem();
JOptionPane.showMessageDialog(frame, "Has
seleccionado: " + seleccion);
}
});
panel.add(boton);
frame.add(panel);
frame.setVisible(true);
}
6.
Crear una aplicación que contenga un JSlider y un texto, de forma que si aumentamos o disminuimos el JSlider el texto cambie de tamaño.Ver solución
package swing;
import javax.swing.*;
import
javax.swing.event.ChangeEvent;
import
javax.swing.event.ChangeListener;
import java.awt.Font;
public class Ejercicio6 {
public static void main(String[] args) {
SwingUtilities.invokeLater(()
-> {
JFrame frame = new JFrame("Ejercicio
JSlider");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JPanel panel = new JPanel();
JLabel label = new JLabel("Aprendiendo
a programar en Java");
panel.add(label);
JSlider slider = new
JSlider(JSlider.HORIZONTAL, 10, 50, 20);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(1);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
panel.add(slider);
slider.addChangeListener(new
ChangeListener() {
public void
stateChanged(ChangeEvent e) {
JSlider source = (JSlider) e.getSource();
if (!source.getValueIsAdjusting())
{
int fontSize = (int) source.getValue();
label.setFont(new Font("Arial", Font.PLAIN, fontSize));
}
}
});
frame.add(panel);
frame.setVisible(true);
});
}
7.
Crear una aplicación que contenga un JSpinner y un botón, al seleccionar uno de los valores de JSpinner y pulsar el botón que muestre una ventana de JOptionPane y nos informe del valor seleccionado en el JSpinner.Ver solución
package swing;
import javax.swing.*;
import java.awt.*;
import
java.awt.event.*;
public class Ejercicio7 {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
createAndShowGUI();
});
}
private static void
createAndShowGUI() {
JFrame frame = new JFrame("Ejercicio
JSpinner");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
JPanel panel = new JPanel();
frame.add(panel);
// Crear un modelo
de spinner con valores de 0 a 100 y paso de
1
SpinnerNumberModel spinnerModel = new
SpinnerNumberModel(0, 0, 100, 1);
JSpinner spinner = new JSpinner(spinnerModel);
panel.add(spinner);
JButton button = new JButton("Mostrar
Valor");
panel.add(button);
button.addActionListener(new
ActionListener() {
@Override
public void
actionPerformed(ActionEvent e) {
// Obtener el valor
actual del spinner
int valor = (int) spinner.getValue();
JOptionPane.showMessageDialog(frame, "Valor
seleccionado: " + valor);
}
});
frame.setVisible(true);
}
8.
Crear una barra de menús.Ver solución
package swing;
import javax.swing.*;
import
java.awt.event.*;
public class Ejercicio8 {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejercicio
Menú");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu fileMenu = new JMenu("Archivo");
menuBar.add(fileMenu);
JMenuItem openItem = new JMenuItem("Abrir");
openItem.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent e) {
// Lógica para manejar
la acción de "Abrir"
JOptionPane.showMessageDialog(null, "Se ha
seleccionado Abrir");
}
});
fileMenu.add(openItem);
JMenuItem exitItem = new JMenuItem("Salir");
exitItem.addActionListener(new
ActionListener() {
public void
actionPerformed(ActionEvent e) {
// Lógica para manejar
la acción de "Salir"
System.exit(0);
}
});
fileMenu.add(exitItem);
frame.setSize(300, 200);
frame.setVisible(true);
}
9.
Crear un menú emergente.Ver solución
package swing;
import javax.swing.*;
import
java.awt.event.*;
public class Ejercicio9 {
public static void main(String[] args) {
JFrame frame = new JFrame("Ejercicio
Menú Emergente");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
// Crear el menú emergente
JPopupMenu popupMenu = new JPopupMenu();
JMenuItem menuItem1 = new JMenuItem("Opción
1");
JMenuItem menuItem2 = new JMenuItem("Opción
2");
JMenuItem menuItem3 = new JMenuItem("Opción
3");
popupMenu.add(menuItem1);
popupMenu.add(menuItem2);
popupMenu.add(menuItem3);
// Agregar el menú emergente
a un componente (por ejemplo, un panel)
JPanel panel = new JPanel();
panel.addMouseListener(new MouseAdapter()
{
@Override
public void
mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
{
popupMenu.show(e.getComponent(),
e.getX(), e.getY());
}
}
});
frame.add(panel);
frame.setVisible(true);
}
10.
Crear una aplicación que contenga un menú, dos submenús: “Copiar” y “Pegar” y un área de texto. De forma que al escribir en el área de texto podamos copiar y pegar el texto utilizando los atajos de teclado.Ver solución
package swing;
import javax.swing.*;
import java.awt.*;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.awt.event.KeyEvent;
public class Ejercicio10 {
public static void main(String[] args) {
SwingUtilities.invokeLater(()
-> createAndShowGUI());
}
private static void
createAndShowGUI() {
JFrame frame = new JFrame("Atajos
de Teclado");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea();
frame.add(textArea);
JMenuBar menuBar = new JMenuBar();
JMenu editMenu = new JMenu("Editar");
editMenu.setMnemonic(KeyEvent.VK_E);
JMenuItem copyMenuItem = new JMenuItem("Copiar");
copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
copyMenuItem.addActionListener(new
ActionListener() {
@Override
public void
actionPerformed(ActionEvent e) {
textArea.copy();
}
});
editMenu.add(copyMenuItem);
JMenuItem pasteMenuItem = new JMenuItem("Pegar");
pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
pasteMenuItem.addActionListener(new
ActionListener() {
@Override
public void
actionPerformed(ActionEvent e) {
textArea.paste();
}
});
editMenu.add(pasteMenuItem);
menuBar.add(editMenu);
frame.setJMenuBar(menuBar);
frame.setPreferredSize(new Dimension(400,
300));
frame.pack();
frame.setVisible(true);
}
No hay comentarios:
Publicar un comentario