Apuntes: Java
No tengo ni trabajo ni nada. En lo que se presenta alguna oportunidad se me ocurrió trabajar sobre mis viejos proyectos de Java para tener la mente fresca en relación a la programación.
Aquí hay apuntes de Java puro.
Contenido
Obtener la altura y anchura de la pantalla
import java.awt.Dimension;
import java.awt.Toolkit;
public class UnaClase {
public static void main(String[] args) {
Toolkit pantalla = Toolkit.getDefaultToolkit();
Dimension tamanoPantalla = pantalla.getScreenSize();
int ancho = tamanoPantalla.width;
int alto = tamanoPantalla.height;
}
}
Usar el tema Nimbus en una GUI de Java
La manera en que yo lo uso es: Únicamente en el método main
poner el tema Nimbus. A las ventanas secundarias (hijas), JOptionPane, JFileChooser y componentes (JButton, JTextField, JScrollPane u otros) se les pondrá el tema automáticamente.
import javax.swing.UIManager.*;
public class EstaEsUnaClase {
public static void main(String[] args) {
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
// If Nimbus is not available, you can set the GUI to another look and feel.
//e.printStackTrace();
}
/**
* Sigue con tu código.
*/
}
}
De acuerdo con la documentación de Oracle, Nimbus es multiplataforma y fue añadido en la versión 6 actualización 10 de Java (Java SE 6 Update 10 (6u10) release).
Fuente: docs.oracle.com/javase/tutorial/ — Nimbus Look and Feel
Crear un archivo de configuración
Para un proyecto personal de Java necesitaba guardar la configuración del usuario. Específicamente el Look and Feel que el usuario seleccione.
Un archivo de configuración se puede usar para guardar otras cosas por ejemplo, el idioma preferido o el tema (día ☀️, noche 🌗).
Java cuenta con java.util.Properties;
usado para crear un archivo de configuración que se maneja como (clave, valor)
.
Un ejemplo de archivo de configuración es el siguiente:
#Fri Jun 30 17:59:36 CST 2023
lookAndFeel=Nimbus
Como yo uso Java Properties
Como nombre de archivo uso CONFIG.config
.
Para escribir (set
) en el archivo de propiedades hago lo siguiente:
import java.util.Properties;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
public class ConfigManagement {
private static Properties prop = new Properties();
private static final String CONFIG_FILE = "CONFIG.config";
public void setConfig(String key, String value) {
try{
prop.setProperty(key, value);
prop.store(new FileOutputStream(CONFIG_FILE), null);
}catch(IOException e){
JOptionPane.showMessageDialog( null, "Something went wrong", "Can not save the changes", JOptionPane.ERROR_MESSAGE );
e.printStackTrace();
}
}
}
Para leer (get
) del archivo de propiedades hago lo siguiente:
import java.util.Properties;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JOptionPane;
public class ConfigManagement {
private static Properties prop = new Properties();
private static final String CONFIG_FILE = "CONFIG.config";
public String getConfig(String key) {
String value = "";
try {
prop.load(new FileInputStream(CONFIG_FILE));
value = prop.getProperty(key);
}catch(IOException e) {
JOptionPane.showMessageDialog( null, "Something went wrong", "Can not read the config file", JOptionPane.ERROR_MESSAGE );
e.printStackTrace();
}
return value;
}
}
Con confianza pueden ver la clase de Java en la que uso mi propio archivo de configuración.
Cambiar el icono de una ventana
La clase que crea un JFrame con un icono de ventana distinto es la siguiente:
import javax.swing.JFrame;
import java.awt.Image;
import java.awt.Toolkit;
public class ClaseQueCreaUnJFrame extends JFrame{
public ClaseQueCreaUnJFrame(){
Toolkit myToolkit = Toolkit.getDefaultToolkit();
Image windowIcon = myToolkit.getImage("./ruta/al/icono.png"); // tal vez acepte otros formatos de imagen, a mi me funciono con .png
setIconImage(windowIcon);
}
}
La clase con el método main
que usa la clase anterior es la siguiente:
public class Ejemplo{
public static void main(String[] args) {
ClaseQueCrearaUnJFrame unaVentanaConJFrame = new ClaseQueCrearaUnJFrame();
unaVentanaConJFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
unaVentanaConJFrame.setSize( 800, 600 );
unaVentanaConJFrame.setVisible( true );
unaVentanaConJFrame.setLocationRelativeTo( null );
//aqui tambien se podria usar unaVentanaConJFrame.setIconImage
}
}
Crear un jar desde la terminal
Crear los .class
con:
javac archivo.java
Crear un archivo MANIFEST
o MANIFEST.MF
con el siguiente contenido:
Manifest-Version: 1.0
Main-Class: clasePrincipal
donde:
clasePrincipal
es la clase que tiene el método main
.
Poner los archivos .class
y el archivo MANIFEST
en un solo directorio. Después con la terminal escribir:
jar cvfm clasePrincipal.jar MANIFEST *.class
donde:
clasePrincipal.jar
es el nombre con extención del jar.
MANIFEST
es archivo creado anteriormente.
*.class
se refiere a que se van a usar todos los .class
que se encuentren en el directorio actual. Adicionalmente se puede escribir *.java
para que se agreguen todos los archivos .java
al jar.