Я работаю над программой, но мой JLabel не появляется. Мой JButton работает отлично (он появляется), но по какой-то причине JLabel не появляется. Я проверил в Интернете, но я ничего не нашел.
package com.hinx.client; import java.awt.Color; import javax.swing.*; public class Main { public static void main(String [] args) { createWindow(); } static void createWindow() { //Create panel JPanel content = new JPanel(); content.setLayout(null); //Build the frame JFrame frame = new JFrame("Hinx - A marketplace for apps - Client ALPHA_0.0.1"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(700, 400); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.add(content); frame.setVisible(true); //Add the login button JButton login = new JButton("Login"); login.setBounds(0, 342, 150, 30); //Create login label JLabel loginlabel = new JLabel("Login Area"); //Create login panel JPanel loginpanel = new JPanel(); loginpanel.setLayout(null); loginpanel.setBounds(0, 0, 150, 400); loginpanel.setBackground(Color.gray); loginpanel.add(login); loginpanel.add(loginlabel); content.add(loginpanel); } }
Установите layout
panel
. Например:
loginpanel.setLayout(new BorderLayout());
Здесь вы можете узнать больше о макетах.
Вот что я получаю:
Я проверил в Интернете, но я ничего не нашел.
JFrame видна до того, как JComponents ( frame.add(content);
) добавлены / созданы
move code line frame.setVisible(true);
(лучше все о JFrame) до конца constuctor
Используйте макеты. В этом случае FlowLayout должен быть хорошим. Не вызывайте setBounds()
и не устанавливайте макет как null
.
Добавить ярлык и кнопку на JPanel
Затем добавьте JPanel
на JFrame
Call pack()
вместо setSize()
Вызов setVisible(true)
в конце.
Удачи!
Вы делаете setLayout null
.
JPanel loginpanel = new JPanel(); loginpanel.setLayout(null);
Использовать это,
JPanel loginpanel = new JPanel(); loginpanel.setLayout(new BorderLayout());
Запустите пользовательский интерфейс на EDT
вместо запуска в основном streamе. Прочтите этот пост .
Пример:
public static void main(String [] args) { Runnable r = new Runnable() { @Override public void run() { createWindow(); } }; EventQueue.invokeLater(r); }