1

我正在开发一个程序,但我的 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);
    }       
}
4

4 回答 4

6

我已经在互联网上检查过,但我没有找到任何东西。

  • frame.add(content);在添加/创建JComponents ( ) 之前,JFrame 是可见的

  • 将代码行frame.setVisible(true);(关于 JFrame 的一切都更好)移动到构造函数的末尾

于 2013-05-03T13:49:02.497 回答
5

layout您的panel. 每个例子:

loginpanel.setLayout(new BorderLayout());

您可以在此处了解有关布局的更多信息。

这是我得到的: 在此处输入图像描述

于 2013-05-03T13:47:48.350 回答
2
  1. 使用布局。在这种情况下FlowLayout应该没问题。不要调用setBounds()也不要将布局设置为null.

  2. 添加标签和按钮JPanel

  3. JPanel然后添加JFrame

  4. 调用pack()而不是setSize()

  5. 最后打电话setVisible(true)

祝你好运!

于 2013-05-03T13:49:10.180 回答
2

您正在制作 setLayout null

    JPanel loginpanel = new JPanel();
    loginpanel.setLayout(null);

用这个,

    JPanel loginpanel = new JPanel();
    loginpanel.setLayout(new BorderLayout());        

在主线程上运行 UIEDT而不是在主线程上运行。阅读这篇文章

例子:

public static void main(String [] args) 
    {
        Runnable r  = new Runnable() {

            @Override
            public void run() {
                createWindow();
            }
        };

        EventQueue.invokeLater(r);
    }   
于 2013-05-03T13:51:48.143 回答