Как исправить мой JLabel, не отображаемый в предполагаемом JPanel? (Код использует JLayeredPane) - PullRequest
1 голос
/ 19 апреля 2020

В настоящее время я делаю проект GUI, как вы можете видеть ниже. При разработке интерфейса я столкнулся с проблемой с моим JLabel. Он не появится, как только я запустлю программу.

public class Main extends JFrame {

private JFrame mainFrame;
private JPanel parentPanel;
private JPanel sidePanel;

private JLayeredPane layer;

private JPanel info, tri, sqr, rect, circ;
private JLabel infoTF, triLabel, sqrTF, circTF;

public static void main(String[] args) {
    Main show = new Main();
}

public Main() {
    mainFrame = new JFrame("Geometric Shapes Computation");


    layer = new JLayeredPane();
    layer.setLayout(null);
    layer.setBounds(0,0,700,600);

    Color standard = new Color (76 ,41, 211);
    Color fg = new Color (204, 204, 204);
    Font items = new Font("Century Gothic", Font.BOLD, 12);


    triLabel = new JLabel("Triangle");
    triLabel.setFont(items);
    triLabel.setBackground(standard);
    triLabel.setForeground(fg);
    triLabel.setVisible(true);

    tri = new JPanel();
    tri.add(triLabel);
    tri.setBackground(Color.ORANGE);
    tri.setLayout(null);
    tri.setBounds(0, 215, 200, 70);

    sqr = new JPanel();
    sqr.setBackground(standard);
    sqr.setLayout(null);
    sqr.setBounds(0, 315, 200, 70);

    parentPanel = new JPanel();
    parentPanel.setLayout(null);
    parentPanel.setSize(700, 600);


    sidePanel = new JPanel();
    sidePanel.setLayout(null);
    sidePanel.setBounds(0,0,200, 600);
    sidePanel.setBackground(standard);

    sidePanel.add(tri);

    layer.add(parentPanel, JLayeredPane.DEFAULT_LAYER);
    layer.add(sidePanel, JLayeredPane.PALETTE_LAYER);
    layer.add(tri, JLayeredPane.MODAL_LAYER);

    mainFrame.add(layer);
    mainFrame.setSize(700, 600);
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setResizable(false);
    mainFrame.setVisible(true);

}
}

1 Ответ

1 голос
/ 19 апреля 2020

Если я правильно понимаю ваш вопрос, у вас просто проблемы с отображением ярлыка, я смог показать ярлык, закомментировав tri.setLayout (null);

tri = new JPanel();
tri.add(triLabel);
tri.setBackground(Color.ORANGE);
//tri.setLayout(null);
tri.setBounds(0, 215, 200, 70);

Это удалось отобразить текст для меня. Надеюсь, это поможет.

...