He estado intentando por un tiempo hacer que este código funcione, y no sé qué tiene de malo. Todo lo que he mostrado dice que declara JFrame correctamente, pero ya lo hice y no aparece. Aquí está mi código:

import javax.swing.*;
import java.awt.*;

public class test extends JFrame {

  private JFrame f;
  private JPanel p;
  private JButton b1;
  private JLabel lab;

  public void test() {
    gui();
  }

  public void gui() {
    JFrame f = new JFrame("Frame");
    f.setBounds(30, 30, 700, 1000);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    f.setFocusable(true);

    p = new JPanel();
    p.setBackground(Color.YELLOW);

    b1 = new JButton("Button");
    lab = new JLabel("Label");

    p.add(b1);
    p.add(lab);

    f.add(p, BorderLayout.SOUTH);
  }

  public static void main(String[] args) {
    new test();
  }
}

No entiendo la codificación lo suficiente como para poder diagnosticar el problema, así que he venido para recibir ayuda. ¡Gracias de antemano!

0
Jestered 19 ene. 2018 a las 17:54

3 respuestas

La mejor respuesta

Esto se debe a que no está llamando al método test(). Sin embargo, parece que su intención era hacer de este método un constructor:

  public void test() {
    gui();
  }

En cambio, debería ser (los constructores no tienen un tipo de retorno):

  public test() {
    gui();
  }
2
ernest_k 19 ene. 2018 a las 15:00

Hice un objeto de prueba y llamé al método de prueba que estaba llamando gui(); en él.

package vai;
import javax.swing.*;
import java.awt.*;

public class test extends JFrame {

    private JFrame f;
    private JPanel p;
    private JButton b1;
    private JLabel lab;

    public void test() {
      gui();
    }

    public void gui() {
        JFrame f = new JFrame("Frame");
        f.setBounds(30, 30, 700, 1000);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        f.setFocusable(true);

        p = new JPanel();
        p.setBackground(Color.YELLOW);

        b1 = new JButton("Button");
        lab = new JLabel("Label");

        p.add(b1);
        p.add(lab);

        f.add(p, BorderLayout.SOUTH);
    }

    public static void main(String[] args) {
        test t1 =  new test();
        t1.test();
    }
  }
0
Germa Vinsmoke 21 ene. 2018 a las 08:22

Fue un simple error. Necesita una instancia de creación de la clase y llame al método gui (). Debe cambiar el nombre de la prueba a Prueba. Es la mejor práctica.

enter image description here

0
Eugene Roldukhin 19 ene. 2018 a las 21:15
48343783