Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Cambiar propiedades de componentes

Estas en el tema de Cambiar propiedades de componentes en el foro de Java en Foros del Web. Hola buen día colegas programadores. Resulta que acabo de empezar con la programación en JAVA, acabo de empezar a programar interfaces gráficas con Eclipse (Librerías ...
  #1 (permalink)  
Antiguo 20/04/2015, 09:05
 
Fecha de Ingreso: abril-2015
Mensajes: 5
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Cambiar propiedades de componentes

Hola buen día colegas programadores. Resulta que acabo de empezar con la programación en JAVA, acabo de empezar a programar interfaces gráficas con Eclipse (Librerías swing, awt). El problema consiste en que quiero cambiar las propiedades de un componente en tiempo de ejecución del programa. Al ejecutarlo me muestra un error en la línea 22 (frame.boton.setText("Hola");

01import java.awt.BorderLayout;
02import java.awt.EventQueue;
03import javax.swing.JFrame;
04import javax.swing.JPanel;
05import javax.swing.border.EmptyBorder;
06import javax.swing.JButton;
07
08public class Cambiar extends JFrame {
09 private JPanel contentPane;
10 JButton boton;
11 public static void main(String[] args) {
12 EventQueue.invokeLater(new Runnable() {
13 public void run() {
14 Cambiar frame = new Cambiar();
15 frame.setVisible(true);
16 actualiza();
17 }
18 });
19 }
20 public static void actualiza(){
21 Cambiar frame = new Cambiar();
22 frame.boton.setText("Hola");
23 }
24 public Cambiar() {
25 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
26 setBounds(100, 100, 450, 300);
27 contentPane = new JPanel();
28 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
29 setContentPane(contentPane);
30 contentPane.setLayout(null);
31 JButton boton = new JButton("New button");
32 boton.setBounds(107, 61, 162, 97);
33 contentPane.add(boton);
34 }
35}

El error dice:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Cambiar.actualiza(Cambiar.java:22)
at Cambiar$1.run(Cambiar.java:16)

De antemano, muchas gracias por sus respuestas y su tiempo.

Última edición por avilavalenz; 20/04/2015 a las 09:22
  #2 (permalink)  
Antiguo 20/04/2015, 09:31
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 7 meses
Puntos: 306
Respuesta: Cambiar propiedades de componentes

Pues antes de lanzarte con las interfaces gráficas deberías repasar conceptos básicos como el ámbito de existencia de variables.

Código Java:
Ver original
  1. 24 public Cambiar() {
  2. 25 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  3. 26 setBounds(100, 100, 450, 300);
  4. 27 contentPane = new JPanel();
  5. 28 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  6. 29 setContentPane(contentPane);
  7. 30 contentPane.setLayout(null);
  8.  
  9. JButton boton = new JButton("New button");
  10.  
  11. 32 boton.setBounds(107, 61, 162, 97);
  12. 33 contentPane.add(boton);
  13. 34 }

No estás añadiendo un JButton a tu JFrame Cambiar, estás creando un JButton que desaparecerá en cuanto salgas del contructor.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 20/04/2015, 09:59
 
Fecha de Ingreso: abril-2015
Mensajes: 5
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Cambiar propiedades de componentes

Muchas gracias. Creo que te debo una. La solución quedaría así:

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

public class Cambiar extends JFrame {
private JPanel contentPane;
static JButton boton = new JButton("New button");
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
Cambiar frame = new Cambiar();
frame.setVisible(true);
}
});
actualiza();
}
public static void actualiza(){
boton.setText("Muchas gracias Xerelo");
}
public Cambiar() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
boton.setBounds(107, 61, 162, 97);
contentPane.add(boton);
}
}

Agradezco mucho tu tiempo y pronta respuesta.

Etiquetas: awt, componentes, eclipse, gui, propiedades, swing
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.