Skip to content

Instantly share code, notes, and snippets.

@netmask
Created August 25, 2010 16:47
Show Gist options
  • Save netmask/549834 to your computer and use it in GitHub Desktop.
Save netmask/549834 to your computer and use it in GitHub Desktop.
package doglax;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.lang.reflect.Field;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
/**
*
* @author netmask
*/
public class Main extends JFrame {
private JTextField jtextField1;
private JTextField jtextField2;
private JTextField jtextField3;
private boolean actived = true;
public Main() {
setLayout(new GridLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
jtextField1 = new JTextField();
jtextField2 = new JTextField();
jtextField3 = new JTextField();
add(jtextField1);
add(jtextField2);
add(jtextField3);
JButton button = new JButton("Activar");
button.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
//tiene que ser un metodo aparte para tener visible la instancia de Main
desactivarFields();
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
add(button);
}
private void desactivarFields() {
//aqui ta la magia
//Iteramos entre todas las propiedades de la classe
for (Field field : Main.class.getDeclaredFields()) {
try {
// por si esta declarada private
field.setAccessible(true);
//si en la instancia de this (Main) el campo es instancia de Jtextfield, se desavilita
if (field.get(this) instanceof JTextField) {
JTextField jfield = (JTextField) field.get(this);
jfield.setEditable(actived ? false : true);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
actived = false;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment