2012-02-11 18 views
8

Aunque he usado Swing antes nunca he usado un diseñador de GUI y tengo problemas para acceder a componentes que he soltado en mi panel desde mi código fuente.Acceso a componentes creados en el diseñador de GUI en IntelliJ

Creé un nuevo proyecto y elegí crear un formulario GUI. Luego creé el método principal usando la opción 'generar' y ahora tengo este código en mi archivo 'helloWorld.java'.

public class helloWorld { 


private JPanel myForm; 
private JLabel text; 

public static void main(String[] args) { 
    JFrame frame = new JFrame("helloWorld"); 
    frame.setContentPane(new helloWorld().myForm); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setPreferredSize(new Dimension(800, 600)); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
} 

Luego añade un JLabel en el diseño con el nombre del campo title, que añade un atributo a la cabeza de mi clase helloWorld. Ahora quiero configurar el texto en el nombre del campo una vez que el programa se haya ejecutado.

Si creo la instancia de JLabel con una nueva cadena como argumento y la agrego a mi JFrame, el programa se bloquea con una excepción de puntero nulo.

Si creo un JLabel sin argumentos y llamo a setText y luego vuelvo a pintar sobre el JFrame, no pasa nada.

Supongo que para algunos mi problema en una sola línea: ¿Cómo accedes a los componentes que he creado usando el diseñador de GUI?

Respuesta

11

En primer lugar, IntelliJ es un poco especial ya que esconde mucho del código repetitivo para usted, por lo que su código fuente parece realmente más simple de lo que realmente está sucediendo bajo el capó.

Básicamente, cuando se utiliza el constructor de IntelliJ interfaz gráfica de usuario, que terminan con un código fuente correspondiente a su forma que tiene este aspecto:

public class DialogEditView { 

    private JPanel mainPanel; 
    private JLabel labelDescription; 
    private JLabel labelExample; 
    private JComboBox comboboxDEJC; 

} 

Para acceder a estos, simplemente puede añadir captadores de ese archivo fuente:

public class DialogEditView { 

    private JPanel mainPanel; 
    private JLabel labelDescription; 
    private JLabel labelExample; 
    private JComboBox comboboxDEJC; 

    public JPanel getMainPanel() { 
     return mainPanel; 
    } 

    // etc. 

} 

Una vez más, ya sea IntelliJ modifica el código fuente o modifica los archivos de clase automagicamente para usted (se puede ir en las Ajustes/Constructor de GUI para probar las dos opciones y ver qué hacen).

¿Cómo accedes a los componentes que he creado usando el diseñador GUI ?

Puede ir al archivo de código fuente correspondiente a su GUI y agregar captadores. Asegúrese de que el nombre de sus componentes ...

0

El código de inicialización se genera automáticamente en su clase de unión se ve como:

private void $$$setupUI$$$() {} 

Para más información sobre el código de inicialización de IntelliJ ver esta documentación JetBrains: Creating Form Initialization Code

Cuestiones relacionadas