Java setBounds no funciona con JPanel

estoy haciendo una pequeña Gui en java. estoy usando setBounds métodos para establecer la posición de los botones, etc en mi JFrame , pero el problema es que cuando lo uso con JPanel botón no es visible en JFrame , y sin JPanel su muy bien,,, consulte los códigos y que por favor me ayude como soy principiante y frente a estos tontos de los problemas .

Este uno está trabajando bien

  JFrame jframe = new JFrame("Working Fine");  
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);  
  jframe.add(jbutton);  
  jframe.setSize(300,300);
  jframe.setVisible(true);

Mismo código al añadir un Botón para Jpanel entonces no funciona así, ¿cuál es incorrecto , por favor me guía

  JFrame jframe = new JFrame("causing problem ");
  jframe.setSize(300,300);
  JPanel p = new JPanel();
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);
  jframe.add(p);
  p.add(jbutton);
  p.setVisible(true);
 //jframe.add(jbutton);  
  jframe.setVisible(true);

el favor de ayudarme en este pequeño problema

  • setLayout(null), setBounds(0, 0, 100, 100), y setSize(300,300) son realmente malas prácticas.
  • Usted nunca debe utilizar un valor nulo de diseño. Leer este gestor de diseño del tutorial: docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
  • estoy aprendiendo Java y no se les ha enseñado LayoutManagers sin embargo, y nuestro instructor nos pidió el uso de null hasta que ir a través de LayoutManagers , así que no hizo uso de ellos . u puede por favor me guía whta es el problema aquí ?
  • «nuestro instructor nos pidió el uso de null hasta que ir a través de LayoutManagers» el instructor no debe instruir a nadie, hasta que han adquirido mínimo de competencia » en el tema. Cualquier persona que tenía, no iba a decirle que use null diseños.

2 Kommentare

  1. 6

    El problema es que cuando uso el posicionamiento absoluto, el JPanel componente no tiene tamaño predeterminado de modo que no aparece. Para llegar a aparecer usted podría hacer

    JFrame frame = new JFrame("No Problem");
    JPanel panel = new JPanel() {
        @Override
        public Dimension getPreferredSize() {
            return new Dimension(300, 300);
        };
    };
    panel.setLayout(new FlowLayout(FlowLayout.CENTER));
    JButton button = new JButton("Position Test");
    panel.add(button);
    frame.add(panel);
    frame.pack();
    frame.setVisible(true);

    De Haciendo Sin un Gestor de Diseño

    Aunque es posible prescindir de un administrador de diseño, usted debe utilizar un layout manager, si es posible. Un administrador de diseño hace que sea más fácil ajustar a look-and-feel-dependiente de los componentes de las apariencias, para diferentes tamaños de fuente, para un contenedor de cambio de tamaño, y a los diferentes locales.

    La elección del gestor de diseño dependerá de cómo usted desea diseñar los componentes.

    Ver Una Guía Visual para el Diseño de los Gerentes.

    • yo soy estudiante y no han aprendido todavía , ok por favor me guía a cuál debo utilizar como principiante , Su respuesta es aceptada .. Gracias
  2. 5

    Usted debe deshacerse de la JPanel del diseño, con el fin de establecer las posiciones absolutas:

    p.setLayout(null);

    • Yo estaba tratando de hacer un diseño absoluto con porcentajes, y no funcionaba hasta que lo probé. Resuelve la pregunta de por qué setBounds no funciona, en lugar de cuestionarlo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea