|
61
|
Programación / Java / Re: Bloquear pantalla
|
en: 8 Septiembre 2013, 00:03 am
|
Me interese por el asunto, así que me puse manos a la obra y a salido esto: /* * Autor: Zoik */ package base; import graphics.Gui; public class Main { public static void main (String[] args ) { public void run() { new Gui(); } }); } }
/* * Autor: Zoik */ package graphics; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import base.Block; private static final long serialVersionUID = 1L; private final String backgroundURL = "src/images/background.jpg"; private final String loginTitle = "Login"; private final String userLabelText = "User:"; private final String passLabelText = "Password:"; private final String loginButtonLabelText = "Login"; private final String cancelButtonLabelText = "Cancel"; private final String user = "user"; private final String pass = "1234"; private ImageDesktopPane desktopBackground; private Block thread; public Gui(){ initFrame(); } public void initFrame(){ setUndecorated(true); setDefaultCloseOperation( DO_NOTHING_ON_CLOSE ); setExtendedState( MAXIMIZED_BOTH ); setAlwaysOnTop(true); new Block(this); initBackground(); initInternalFrame(); setVisible(true); } public void initBackground(){ desktopBackground = new ImageDesktopPane(backgroundURL); add(desktopBackground); } public void initInternalFrame(){ internalFrameLogin. setPreferredSize(new Dimension(300, 200)); desktopBackground.add(internalFrameLogin); internalFrameLogin.setVisible(true); initLoginPanel(); } public void initLoginPanel(){ internalFrameLogin.add(panelLogin); initLabels(); initTextFields(); initButtons(); } public void initLabels(){ userLabel = new JLabel(userLabelText ); passwordLabel = new JLabel(passLabelText ); addComponentGBL (panelLogin,userLabel, 0, 0, 1, 1, GridBagConstraints. WEST, GridBagConstraints. NONE, 10, 75, 0, 0); addComponentGBL (panelLogin,passwordLabel, 0, 1, 1, 1, GridBagConstraints. WEST, GridBagConstraints. NONE, 10, 45, 70, 0); } public void initTextFields(){ userTextField. setPreferredSize(new Dimension(90, 30)); passwordTextField. setPreferredSize(new Dimension(90, 30)); addComponentGBL (panelLogin,userTextField, 1, 0, 1, 1, GridBagConstraints. EAST, GridBagConstraints. NONE, 10, 0, 0, 65); addComponentGBL (panelLogin,passwordTextField, 1, 1, 1, 1, GridBagConstraints. EAST, GridBagConstraints. NONE, 10, 0, 70, 65); userTextField.setFocusable(true); } public void initButtons(){ loginButton = new JButton(loginButtonLabelText ); cancelButton = new JButton(cancelButtonLabelText ); loginButton.addActionListener(this); cancelButton.addActionListener(this); addComponentGBL (panelLogin,loginButton, 0, 1, 1, 1, GridBagConstraints. CENTER, GridBagConstraints. NONE, 30, 70, 0, 0); addComponentGBL (panelLogin,cancelButton, 1, 1, 1, 1, GridBagConstraints. CENTER, GridBagConstraints. NONE, 30, 0, 0, 40); } public void addComponentGBL (Container container, Component component, int gridx, int gridy, int gridwidth, int gridheight, int anchor, int fill, int inset1, int inset2, int inset3, int inset4 ) { GridBagConstraints gbc = new GridBagConstraints(gridx, gridy, gridwidth, gridheight, 1.0, 1.0, anchor, fill, insets, 0, 0); container.add(component, gbc); } if(e.getSource() == loginButton) { if(userTextField.getText().equals(user) && passwordTextField.getText().equals(pass)){ dispose(); } } else if(e.getSource() == cancelButton) { dispose(); } } }
/* * Autor: Zoik */ package graphics; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JDesktopPane; private static final long serialVersionUID = 1L; public ImageDesktopPane (String path ) { try { image = ImageIO. read(new File(path )); System. out. println("Error al cargar la imagen de fondo"); } } @Override protected void paintComponent (Graphics g ) { super.paintComponent(g); g.drawImage(image, 0, 0, getWidth(), getHeight(), this); } }
/* * Autor: Zoik */ package base; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.swing.JFrame; import graphics.Gui; public class Block{ private Gui frame; public Block(Gui gui){ frame = gui; ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate( { public void run() { front(); } }, 500, 50 , TimeUnit.MILLISECONDS ); } public void front(){ frame. setExtendedState(JFrame. MAXIMIZED_BOTH); frame.toFront(); } }
Un saludo y espero te sirva.
|
|
|
62
|
Programación / Java / Re: Bloquear pantalla
|
en: 6 Septiembre 2013, 16:44 pm
|
Bueno, podrías programar un evento en ese textfield, que hasta que no escriba esa información mantenga esa ventana con lo siguiente: ventana.setModal(true);
Y para que no cierren la aplicación: frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
Este último código unicamente se le puede aplicar a tu frame, en el caso en que le den a la X no se cerrara, solo podrán matar el proceso. Un saludo y comenta que tal te fue.
|
|
|
63
|
Programación / Java / Re: Creando un programa para controlar faltas de asistencia (Curso)
|
en: 2 Septiembre 2013, 21:31 pm
|
Bueno puedes hacerlo de muchas maneras distintas, la idea sería coger otro JTable distinto y printar todos los alumnos, y en vez de tener el JCheckBox para poner faltas le pones el número de faltas que tiene cada alumno con el método de getFaltas(), con el código que te e pasado tendría que ser muy fácil hacer esta parte.
PD: Cuando tengas mas tiempo si veo que no tiras ya te posteo código, pero primero intentalo buscando en internet.
Un saludo.
|
|
|
64
|
Programación / Java / Re: Seleccionar contenido de celda
|
en: 2 Septiembre 2013, 18:56 pm
|
Cogiendo ese último método, si no me equivoco solo te faltaría agregarle a la tabla el listener, para que al pulsar sobre cualquier celda vaya a buscar ese evento. tabla.addFocusListener(this);
Un saludo y comenta si te funciona.
|
|
|
65
|
Programación / Java / Re: Creando un programa para controlar faltas de asistencia (Curso)
|
en: 2 Septiembre 2013, 18:45 pm
|
Bueno a ver, lo ideal a mi parecer no sería introducir un nombre y que le ponga falta, lo que estaría bien sería, mostrar una JTable con todos los nombres de la clase y a raíz de hay poner al lado de cada nombre un JCheckBox, para ir marcando los alumnos que han "faltado", al acabar darle al botón aceptar y se le sumaría una falta a cada alumno con el JCheckBox marcado, no se si me e explicado. Bien, sabiendo esto,estaría bien que al darle a tu botón, se abriese una ventana con dicha tabla, para ello normalmente se utiliza un JDialog. /* * Autor: Zoik */ public class Main { public static void main (String[] args ) { new Gui(); } }
/* * Autor: Zoik */ import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L; public boolean isCellEditable(int row, int col){ if(col == 2){ return true; } return false; } }; private ArrayList<Alumno> alumnos = new ArrayList<Alumno>(); private final int columnas = 3; public Gui(){ setSize(200,200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); add(boton); boton.addActionListener(this); defineTable(); agregarAlumnos(); } public void agregarAlumnos(){ // Este método lo agrego para que veas como darías de alta alumnos, hay dos formas alumnos.add(new Alumno("Pepe","Benito","Fraguas")); // Hacerlo todo directamente pasandole por parámetro al constructor sobrecargado lo que tiene que asignarles a las variables alumnos.add(new Alumno()); alumnos.get(1).setNombre("Juan"); alumnos.get(1).setPrimerApellido("Armando"); // No pasarle nada por constructor y hacerlo a mano con los métodos de la calss Alumno alumnos.get(1).setSegundoApellido("No se que poner"); } if(e.getSource() == boton){ definePasarLista(); addRow(); } else if(e.getSource() == botonAceptar){ int rowsCount = model.getRowCount(); for(int i = 0; i < rowsCount; i++){ if(((Boolean) tabla. getValueAt(i, 2)). booleanValue() == true){ alumnos.get(i).addFalta(); } } /*for(int i = 0; i < rowsCount; i++){ System.out.println(alumnos.get(i).getNombre()+" - "+alumnos.get(i).getFaltas()); //Con esto compruebas al darle a aceptar, las faltas que tienen todos en consola. }*/ pasarLista.dispose(); } } public void defineTable(){ model.addColumn("Nombre"); model.addColumn("Apellidos"); model.addColumn("Falta"); tableColumn = tabla.getColumnModel().getColumn(2); tableColumn. setCellEditor(tabla. getDefaultEditor(Boolean. class)); tableColumn. setCellRenderer(tabla. getDefaultRenderer(Boolean. class)); } public void addRow(){ int size = alumnos.size(); int rowsCount = model.getRowCount(); for(int i = 0; i < rowsCount; i++){ model.removeRow(0); } for(int i = 0; i < size; i++){ data[0] = alumnos.get(i).getNombre(); data[1] = alumnos.get(i).getPrimerApellido()+ " " +alumnos.get(i).getSegundoApellido(); data[2] = false; model.addRow(data); } } public void definePasarLista(){ pasarLista.setTitle("Pasar Lista"); pasarLista.setSize(800,800); pasarLista.setLocationRelativeTo(null); pasarLista.setVisible(true); botonAceptar.addActionListener(this); } }
/* * Autor: Zoik */ public class Alumno { private String nombre,primerApellido,segundoApellido ; private int faltas = 0; public Alumno(){ } this.nombre = nombre; this.primerApellido = primerApellido; this.segundoApellido = segundoApellido; } public void setNombre (String value ){ nombre = value; } public void setPrimerApellido (String value ){ primerApellido = value; } public void setSegundoApellido (String value ){ segundoApellido = value; } return nombre; } public String getPrimerApellido (){ return primerApellido; } public String getSegundoApellido (){ return segundoApellido; } public void addFalta(){ faltas++; } public void removeFalta(){ faltas--; } public int getFaltas(){ return faltas; } }
Lo e hecho suponiendo que ya tienes lo anterior hecho, obviamente no pondrías únicamente un botón al abrir la aplicación. Si quieres hacer interfaces rápido, NetBeans está genial con su bonito drag and drop, si quieres aprender mucho yo recomiendo Eclipse, yo empece con el y no me e separado nunca, no vayas al lado oscuro . Un saludo y ya comentaras que tal te a ido.
|
|
|
67
|
Programación / Java / Re: [Aporte] Shutdown en diferentes Plataformas.
|
en: 30 Agosto 2013, 21:56 pm
|
Me lo e leído muy por encima, y tengo curiosidad sobre la class OperatingSystem, podrías pasarme por privado alguna referencia con la cual pudiese aprender a distinguir entre sistemas operativos por favor?
Gracias de antemano.
|
|
|
68
|
Programación / Java / Re: Ayuda Java
|
en: 30 Agosto 2013, 21:49 pm
|
Es decir, si me e enterado bien, quieres poner java, es decir la máquina virtual de java para que te reconozca los ficheros de java, en modo silencioso descargandolo y instalandolo directamente de internet.
Es un poco contradictorio, si no tienes java, como quieres ejecutar aplicaciones echas en java.
Explicate mejor porfavor.
|
|
|
69
|
Programación / Java / Re: [Aporte] Shutdown en diferentes Plataformas.
|
en: 30 Agosto 2013, 21:46 pm
|
Bueno solo he probado el programa con un copy paste, y no se que hago mal que la hora no me la coge, introduzco, la fecha por defecto, y la hora 01:00:00 también e probado la hora 01:00 me salta el dialog de que la revise. El código cuando tenga tiempo me lo mirare en profundidad, pero tiene una pintaza Un saludo
|
|
|
70
|
Programación / Java / Re: Ejecutar programa java en segundo plano
|
en: 30 Agosto 2013, 09:46 am
|
Bueno si haces una aplicación sin interface gráfica, y luego la exportas en un jar, al dar doble click no ves nada de lo que hace la aplicación, solo puedes ver el proceso si no me equivoco.
Respecto a que funcione todo el rato, creo recordar que ubuntu tenía un fichero con comandos que se inician al arrancar la máquina, podrías agregar un comando que iniciase la aplicación.
No se si sera eso lo que quieres.
Un saludo.
|
|
|
|
|
|
|