Que necesitas
- Netbeans 6.0 o sup
- Un editor de texto
- imaginacion
Proyecto
2. Ahora diseña la interfaz para "aplicacion.java" como la imagen de abajo, recuerda los nombres en rojo son importantes, colocalos como estan:
3. Diseña la interfaz para "configurar,java", esta interfaz nos servira como un panel de configuracion donde podremos realizar nuestros cambios.
package configuracion;
import java.awt.Color;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JColorChooser;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class miconfiguracion {
//configuracion por defecto
private String default_configuracion = "/-1118482/-1118482/-1118482/-1118482/Arial/1/-16777063/12/";
//direccion del archivo de texto
private String archivo_de_configuracion=System.getProperty("user.dir") + "/miconfiguracion.txt";
//Para leer archivo de texto
private File archivo = null;
private FileReader fr = null;
private BufferedReader br = null;
// para escribir en archivo
private FileWriter fichero = null;
private PrintWriter pw = null;
//almacena los valores leidos del archivo de miconfiguracion.txt
// donde los valores del vector:
// 0 a 3 -> son los colores de fondo, panel1, panel2 y panel3
// 4 -> Tipo de fuente
// 5 -> Estilo de fuente
// 6 -> Color de fuente
// 7 -> Tamaño de fuente
private Vector<String> vector = new Vector<String>(10,2);
public miconfiguracion() {
try {
Configuracion();
} catch (FileNotFoundException ex) {
Logger.getLogger(miconfiguracion.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(miconfiguracion.class.getName()).log(Level.SEVERE, null, ex);
}
}
/* abre un archivo de texto y lee el contenido */
private void Configuracion() throws FileNotFoundException, IOException{
String configuracion="";//contenido del archivo
//el archivo se encuentra en el mismo directorio que la aplicacion
archivo = new File(archivo_de_configuracion);
//si el archivo existe leemos la configuracion
if(archivo.exists()){
configuracion = Leer_configuracion();
}
else{//sino existe lo creamos
Guardar_Configuracion(default_configuracion);
configuracion = Leer_configuracion();
}
// el string que se retorno en "configuracion", lo separa mediante tokens y lo almacena
// en una variable de tipo vector
token(configuracion);
}
/* ABRE UN ARCHIVO DE TEXTO Y LEE EL CONENIDO EL CUAL RETORNA EN UN STRING */
private String Leer_configuracion() throws FileNotFoundException, IOException{
String tmp_c="";
fr = new FileReader(archivo);
br = new BufferedReader(fr);
// Lectura del fichero de texto
String linea = null;
while ((linea = br.readLine()) != null) {
tmp_c = tmp_c + linea;
}
fr.close();
return tmp_c;
}
/* separa la configuracion y los añade al vector */
private void token(String s){
//separamos los valores leidos en tokens
StringTokenizer tokens = new StringTokenizer(s,"/");
while(tokens.hasMoreTokens()){
vector.addElement(tokens.nextToken());
}
}
/* MUESTRA LA VENTA DE DIALOGO [ESCOGER COLOR]*/
public Color Escoger_Color(java.awt.event.ActionEvent evt){
Color color = JColorChooser.showDialog(null,"Escoja un color",((JButton)evt.getSource()).getBackground());
if(color!=null){return color;}else{return new Color(-1118482);}
}
//guarda las configuracion en el archivo de texto "miconfiguracion.txt"
public boolean Guardar_Configuracion(String t){
boolean ok = false;
try {
fichero = new FileWriter(archivo_de_configuracion);
pw = new PrintWriter(fichero);
pw.println(t);
ok = true;
fichero.close();
} catch (IOException ex) {
Logger.getLogger(miconfiguracion.class.getName()).log(Level.SEVERE, null, ex);
}
return ok;
}
/* DEVUELVE LOS VALORES ALMACENADOS EN EL VECTOR */
/* inicio */
public int Color_de_Fondo(){
return Integer.valueOf(vector.get(0).toString());
}
public int Color_Panel1(){
return Integer.valueOf(vector.get(1).toString());
}
public int Color_Panel2(){
return Integer.valueOf(vector.get(2).toString());
}
public int Color_Panel3(){
return Integer.valueOf(vector.get(3).toString());
}
public String Tipo_Fuente(){
return vector.get(4).toString();
}
public int Tipo_Estilo_Fuente(){
return Integer.valueOf(vector.get(5).toString());
}
public int Color_Fuente(){
return Integer.valueOf(vector.get(6).toString());
}
public int Size_Fuente(){
return Integer.valueOf(vector.get(7).toString());
}
/* fin */
}
5. En la clase interfaz aplicacion.java, añade el siguiente codigo:
public void inicializar(){
/* CONFIGURACION*/
miconfiguracion mc = new miconfiguracion();
//se carga la configuracion en los objetos
this.setBackground(new Color(mc.Color_de_Fondo()));
FONDO.setBackground(new Color(mc.Color_de_Fondo()));
PANEL1.setBackground(new Color(mc.Color_Panel1()));
PANEL2.setBackground(new Color(mc.Color_Panel2()));
PANEL3.setBackground(new Color(mc.Color_Panel3()));
Font f = new Font( mc.Tipo_Fuente(),mc.Tipo_Estilo_Fuente(),mc.Size_Fuente() );
TEXTO.setFont(f);
TEXTO.setForeground(new Color(mc.Color_Fuente()));
/* -- */
}
despues añade este en el constructor de la clase, para terminar, escribe en el evento de smConfigurar el siguiente codigo:
private void smConfigurarActionPerformed(java.awt.event.ActionEvent evt) {
configurar c = new configurar();
c.show();
}
6. Para terminar la aplicacion, en la clase interfaz configurar.java, declara
private miconfiguracion mc = new miconfiguracion();
private ButtonGroup buttongroup = new ButtonGroup();
private int OpcionSel;
Despues añade en el constructor de la clase:
public configurar() {
initComponents();
this.setLocationRelativeTo(null);
this.setTitle("Opciones de configuración...");
buttongroup.add(opcion1);
buttongroup.add(opcion2);
buttongroup.add(opcion3);
buttongroup.add(opcion4);
/* carga la configuracion en los objetos*/
//carga los colores en los jbutton
cmd0.setBackground(new Color(mc.Color_de_Fondo()));
cmd1.setBackground(new Color(mc.Color_Panel1()));
cmd2.setBackground(new Color(mc.Color_Panel2()));
cmd3.setBackground(new Color(mc.Color_Panel3()));
//carga el tipo de letra
for(int i=0;i<=cboTipo.getItemCount()-1;i++){
if(mc.Tipo_Fuente().equals(cboTipo.getItemAt(i).toString())){
cboTipo.setSelectedIndex(i);break;
}
}
//carga el tamaño de la fuente
for(int i=0;i<=cboSize.getItemCount()-1;i++){
if(mc.Size_Fuente()==Integer.valueOf(cboSize.getItemAt(i).toString())){
cboSize.setSelectedIndex(i);break;
}
}
//carga el estilo en el JRadioButton correspondiente
if(mc.Tipo_Estilo_Fuente()==0){opcion1.setSelected(true);}
if(mc.Tipo_Estilo_Fuente()==1){opcion2.setSelected(true);}
if(mc.Tipo_Estilo_Fuente()==2){opcion3.setSelected(true);}
if(mc.Tipo_Estilo_Fuente()==3){opcion4.setSelected(true);}
//carga el color de fondo
cmdFuente.setBackground(new Color(mc.Color_Fuente()));
/* fin configurar */
}
Ahora el el JButton: cmdCambios, escribe el siguiente codigo:
private void cmdCambiosActionPerformed(java.awt.event.ActionEvent evt) {
/* SE GUARDA LA NUEVA CONFIGURACION */
//color fondo/color panel1/color panel2/color panel3/Tipo fuente/estilo fuente/color fuente/tamaño fuente
if(
mc.Guardar_Configuracion("/"+cmd0.getBackground().getRGB()+"/"+
cmd1.getBackground().getRGB()+"/"+
cmd2.getBackground().getRGB()+"/"+
cmd3.getBackground().getRGB()+"/"+
cboTipo.getSelectedItem().toString()+"/"+
OpcionSel+"/"+
cmdFuente.getBackground().getRGB()+"/"+
cboSize.getSelectedItem().toString()+"/"
))
{
JOptionPane.showMessageDialog(this,"La nueva configuracion se guardo correctamente \nLos cambios se veran la proxima ves que inicie la aplicacion...");
}
}
finalmente, debes añadir los eventos en los objetos que declaramos mas arriba, este codigo no lo copies y pegues, sino fijate bien, donde debe ir cada instruccion
private void cmd3ActionPerformed(java.awt.event.ActionEvent evt) {
cmd3.setBackground(mc.Escoger_Color(evt));
}
private void cmd2ActionPerformed(java.awt.event.ActionEvent evt) {
cmd2.setBackground(mc.Escoger_Color(evt));
}
private void cmd1ActionPerformed(java.awt.event.ActionEvent evt) {
cmd1.setBackground(mc.Escoger_Color(evt));
}
private void cmdFuenteActionPerformed(java.awt.event.ActionEvent evt) {
cmdFuente.setBackground(mc.Escoger_Color(evt));
}
private void opcion1ActionPerformed(java.awt.event.ActionEvent evt) {
OpcionSel =0;
}
private void opcion2ActionPerformed(java.awt.event.ActionEvent evt) {
OpcionSel =1;
}
private void opcion3ActionPerformed(java.awt.event.ActionEvent evt) {
OpcionSel =2;
}
private void opcion4ActionPerformed(java.awt.event.ActionEvent evt) {
OpcionSel =3;
}
private void cmd0ActionPerformed(java.awt.event.ActionEvent evt) {
cmd0.setBackground(mc.Escoger_Color(evt));
}
ejecuta el proyecto, si no tienes ningun error debes tener algo como esto
6 comentarios:
Muchas gracias por el tiempo que dedica a los tutoriales. Este es muy útil.
Gracias JcMouse por este y todos los proyectos tan buenos que publicas... me han ayudado mucho...
ademas la explicacion es muy buena y facil de enterder..
Johp3
millon gracias eres lo maximo por gente como tu esuqe nosostros nos perfeccionamos porqe loq ue nos enseñan en clase es poco con lo que e aprendido contigo gracias
La verdad me dejas sorprendiido
aunq ya tiiene muxo tiempo tu publicacion a penas lo estoi viendo
y la verdad me sorprendes
sige asiii eres un master
buena suerte
atttE: desde mexico cancun quientana roo ...jose alcudia
Hola Jc mouse, siempre sigo tus ejemplos... te felicito por tu dedicación y sobre todo como compartes los conocimientos con los que estamos iniciando...
Sobre este programa quería consultarte algo, mira: A mi se me vino la misma pregunta, como puedo guardar la configuración de mi aplicación, pues y opté como tu leer un archivo.txt, pero tengo un problema:
Cuando corro la aplicación trabaja perfectamente, pero cuando se construye el .jar no funciona... porque se da esto?? bueno, tienes otra idea para guardar la configuración y no tener este inconveniente, estaba leyendo y dice que no es factible sobreescribir el archivo txt dentro del jar, lo que hay que hacer es extraer, modificar y zipiar nuevamente...
Quedo a la espera de tus comentario y muchas gracias por tus valioso conocimiento.
Saludos
Leandro
Gracias por el aporte.
Me sale eso al querer bajar el código fuente
Warning: mysql_connect() [function.mysql-connect]: Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled) in /data/webs/sites/y/a/yachaywasi/web/blog/download/lib/conectate.php on line 4
error de conexion
Publicar un comentario