Java - Ocultar Text Field por defecto

 
Vista:
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 04/09/2017 15:03:04
Buenas tardes. Acabo de registrarme y espero poder aprender mucho por estos lares.

Estoy aprendiendo programacion, concretamente Java. Soy un completo Novato y he estado unas semanas aprendiendo y leyendo sobre Java, y tambien he dado algunas clases con un profesor via online.

He decidido hacer una pequeña aplicacion para poner mis conocimientos a prueba y me he topado con un problemilla.

a89b97f7cb084990dbc2d0fab4d68b51

Lo que estoy buscando es que el campo Text Field que aparece a la derecha del boton "Añadir Aroma" aparezca ocultado por defecto. Quiero que al apretar el boton, el campo se haga visible.

He visto un tutorial donde poder hacer visible o invisible un Text Field con el comando setVisible(false), por ejemplo creando 2 botones, "Hide y Show", donde interactuan con un Text Field.

El problema es que en este tutorial, por defecto, el Text Field viene visible. He probado simplemente a indicar que txtAroma1 ( asi se llama textfield ) sea txtAroma1.setVisible(false) pero... no funciona. Evidentemente se me escapa algo pero no se que es.

¿De que manera puedo hacer que un campo ( no solo un text field, cualquiera ) aparezca oculto por defecto?.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ocultar Text Field por defecto

Publicado por Tom (1831 intervenciones) el 04/09/2017 16:00:04
¡ Otro vapeador ! :D
setVisible() funciona perfectamente ... así que es probable que estés cometiendo algún otro error en tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 04/09/2017 16:38:38
Eyyyy, si, un vaper por aqui, jajaja. Hay muchas aplicaciones para hacer tus propios liquidos, pero me parecio interesante hacer la mia propia.

Te cuento, el codigo lo tengo tal que asi...

492418eb4a768e3bc91f76f83bc2f399
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose
Val: 130
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Ocultar Text Field por defecto

Publicado por Jose (46 intervenciones) el 04/09/2017 16:53:10
hola.
txtaromal.serVisible(false); colócalo en el constructor, al final del constructor.
o suponiendo que usas netbeans, en la forma pestaña Desing (modo diseño de tu formulario), dale clic derecho a tu TextField, te saldrá un menu contextual, selecciona propiedades, te saldrá otro cuadro de dialogo busca la propiedad visible y colocas el valor falso.
y ahí tendrías por defecto tu textfield oculto.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 04/09/2017 17:00:56
Lo probe tambien a ponerlo como dices al final, en el public static void y me dice:

non-static variable txtaroma1 cannot be referenced form a static context.

Eso de mirarlo en propiedades es lo primero que pense, pero no veo que exista esa propiedad para editarla... o estoy muy ciego o tiene un nombre que no se asociar.

b699f4f6143479dba370f9ee7fa7eb19
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 04/09/2017 19:13:34
Bueno, consegui solucionarlo colocandolo aqui:

1
2
3
public FrameTebiLiquid() {
        initComponents();
        txtaroma1.setVisible(false);

El problema es... que no aparece el text field al menos que cambie el tamaño de la ventana. No se si me explico: Al ejecutar el programa, me aparece la ventana del programa, le doy al boton para que aparezca el Text Field y no se ve, agrando un poco la ventana y ya aparece magicamente.

He hecho otra prueba en otro proyecto nuevo y pasa lo mismo. ¿A que es debido?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ocultar Text Field por defecto

Publicado por Yamil Bracho (2315 intervenciones) el 04/09/2017 19:27:51
El punto es que setVisible solo estable el valor de una propiedad pero debes decirle que se redibije. Para ello usas el metodo repaint().
Te quedaria algo como :

1
2
3
4
public void toogleText(boolean show) {
    txtaroma1.setVisible(show);
    txtaroma1.repaint(); // o quizas txtaroma.revalidate()
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 04/09/2017 22:19:59
Supongo que donde pusiste "show" querias poner true :P

Lo del repaint ya lo intente, y revalidate tambien, y sigue haciendo exactamente lo mismo.

1
2
3
4
5
private void btnpruebaActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        txtprueba.setVisible(true);
        txtprueba.repaint();
        txtprueba.revalidate();

Tengo ese boton para que aparezca el textfield, y hasta que no cambio el tamaño de la ventana, no se visualiza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ocultar Text Field por defecto

Publicado por Yamil Bracho (2315 intervenciones) el 04/09/2017 22:50:52
El show es el falg q ue pasas como true o false.

Si quieres ocultar el texto haces
toogleText(false)

Si quieres mostrar el texto haces
toogleText(true)

Prueba con este codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package examples;
 
/**
 *
 * @author Mapfre
 */
public class MyForm extends javax.swing.JFrame {
 
    /**
     * Creates new form MyForm
     */
    public MyForm() {
        initComponents();
    }
 
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
 
        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
 
        jLabel1.setText("jLabel1");
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1)
                    .addComponent(jLabel1))
                .addContainerGap(317, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel1)
                .addContainerGap(246, Short.MAX_VALUE))
        );
 
        pack();
    }// </editor-fold>                        
 
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
   boolean show = !this.jLabel1.isVisible();
        this.jLabel1.setVisible(show);
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(MyForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(MyForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(MyForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(MyForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
 
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MyForm().setVisible(true);
            }
        });
    }
 
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                   
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ocultar Text Field por defecto

Publicado por Tom (1831 intervenciones) el 05/09/2017 08:12:56
No uses setVisible() sino setEnabled(), así permanecerá visible pero no editable, que supongo es lo que quieres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 05/09/2017 12:32:26
No no. La idea es que no se vea. Que exista un boton llamado "Agregar aroma" y al pulsarlo, aparezca ya el campo donde escribir el aroma. De hecho la idea es que si vuelvo a pulsarlo, debajo de ese campo aparezca otro, pero eso ya se escapa a mis conocimientos xD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ocultar Text Field por defecto

Publicado por Tom (1831 intervenciones) el 05/09/2017 15:38:34
Para aprender está bien. Pero piensa en esta alternativa:
- Tienes el textfield de aroma editable (y visible, claro) y el boton de añadir disabled.
- Cuando escribas en el textfield del aroma, habilitas el boton de añadir.
- Cuando te parezca correctp el nombre del aroma, pulsas el boton de añadir, y pones a disabled (o no editable) el texfield.
- Deshabilitas el botón, lo mueves una posición más abajo, y añades un nuevo textfield editable ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ocultar Text Field por defecto

Publicado por Esteban (9 intervenciones) el 05/09/2017 21:38:51
Si, tambien estaria bien. El problema es que ni pajolera idea de como mover el boton abajo.

De todas formas, mil gracias, pero es que estoy intentando correr antes de aprender a caminar. Llevo 2 semanitas aprendiendo a programar y estar metido ya con interfaz etc... creo que tengo que replantear como aprender y no querer correr tanto, por que me faltan infinitos conocimientos para algo como esto que es relativamente "sencillo".

Eso si, seguire molestando por este foro, parece muy activo y es de agradecer!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ocultar Text Field por defecto

Publicado por Alberto (1 intervención) el 19/08/2019 18:53:46
Lo que quieres se puede solucionar de una manera muy sencilla. Basta con que coloques el TextField dentro de un pequeño panel a la medida de tu textfield. después, al panel le quitas y le pones la visibilidad con panel.setVisible(fallse); y listo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar