Включить JLabel в JPanel

Я пытаюсь показать JLabel в JPanel, но это не показывает меня. Я не знаю, почему это будет

Мой код выглядит следующим образом:

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

public class DialogoCancion extends JFrame {
    private JPanel panel;
    private JLabel titulo;
    private JLabel interprete;
    private JLabel duracion;
    private JButton añadir;
    private JButton cancelar;

    public DialogoCancion(){
        super("Añadir Cancion");
        setBounds(150, 80, 250, 150);
        panel = new JPanel();
        panel.setLayout(null);
        titulo = new JLabel("Titulo");
        interprete = new JLabel ("Interprete");
        duracion = new JLabel ("Duracion");
        añadir = new JButton ("Añadir");
        cancelar = new JButton ("Cancelar");

        titulo.setBounds(10, 10, 80, 80);
        panel.add(titulo);
        panel.add(interprete);
        panel.add(duracion);
        panel.add(añadir);
        panel.add(cancelar);

        setVisible(true);
    }
}

Я хочу, чтобы это было видно titulo, но я ничего не понимаю.

0
задан 27.12.2016, 01:19
0 ответов

Ты был бы должен добавлять в конце твоего кода

add(panel);
setVisible(true);

Так как твой класс увеличивает одного JFrame когда ты веришь в инстанцию твоего класса, ты сможешь видеть это, но пока ты не добавил панель в тебя JFrame не будет видно ничто.

0
ответ дан 03.12.2019, 17:58

тебе не хватает add (панели), так как ты используешь extends jframe

но если бы ты не использовал extends JFrame, и ты это призовешь, как Объект был бы:

так: замечание что instacie такой Jframe как объект и добавьте панель к frame

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

public class DialogoCancion  {
private JFrame frame;
private JPanel panel;
private JLabel titulo;
private JLabel interprete;
private JLabel duracion;
private JButton añadir;
private JButton cancelar;

public DialogoCancion(){
    frame=new JFrame();
    frame.setBounds(150, 80, 250, 150);
    panel = new JPanel();
    panel.setLayout(null);
    titulo = new JLabel("Titulo");
    interprete = new JLabel ("Interprete");
    duracion = new JLabel ("Duracion");
    añadir = new JButton ("Añadir");
    cancelar = new JButton ("Cancelar");

    titulo.setBounds(10, 10, 80, 80);
    panel.add(titulo);
    panel.add(interprete);
    panel.add(duracion);
    panel.add(añadir);
    panel.add(cancelar);
    frame.add(panel);
    frame.setVisible(true);
}

public static void main(String args[]){
    DialogoCancion dc=new DialogoCancion();
}
}

здесь я оставляю тебе screenshot, который показывает функциональность introducir la descripción de la imagen aquí

0
ответ дан 03.12.2019, 17:58

Я нашел какие-то недостатки. У тебя не было метода main. Не является необходимым метод main в классе DialogoCancion, но как ты не включил остальные классы или не, если это единственная, что ты используешь, я добавил его. Идея - для того, чтобы был функциональным твой класс, и ты смог видеть результат. Ты не разместил add в панель как также твой layer как BoxLayout (панель, BoxLayout. Y_AXIS) для того, чтобы появились твои элементы один под другим.

import javax.swing.*;
    public class DialogoCancion extends JFrame {
        private JPanel panel;
        private JLabel titulo;
        private JLabel interprete;
        private JLabel duracion;
        private JButton añadir;
        private JButton cancelar;

        public DialogoCancion(){
            super("Añadir Cancion");
            setBounds(150, 80, 250, 150);
            panel = new JPanel();
            panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
            titulo = new JLabel("Titulo");
            interprete = new JLabel ("Interprete");
            duracion = new JLabel ("Duracion");
            añadir = new JButton ("Añadir");
            cancelar = new JButton ("Cancelar");

            titulo.setBounds(10, 10, 80, 80);
            panel.add(titulo);
            panel.add(interprete);
            panel.add(duracion);
            panel.add(añadir);
            panel.add(cancelar);

            add(panel);

            setVisible(true);
        }

        public static void main(String[] args){
            DialogoCancion frame = new DialogoCancion();
        }
    }
0
ответ дан 03.12.2019, 17:58