JLabel没有出现

时间:2013-05-03 13:44:57

标签: java swing window jbutton jlabel

我正在制作一个节目,但我的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 个答案:

答案 0 :(得分:5)

layout设置panel。每个例子:

loginpanel.setLayout(new BorderLayout());

您可以详细了解布局here

这是我得到的: enter image description here

答案 1 :(得分:5)

  

我在互联网上查过但我没找到任何东西。

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

  • 将代码行frame.setVisible(true);(更好地了解JFrame的所有内容)移至构造函数的末尾

答案 2 :(得分:2)

  1. 使用布局。在这种情况下,FlowLayout应该没问题。请勿致电setBounds(),也不要将布局设置为null

  2. JPanel

  3. 上添加标签和按钮
  4. 然后在JPanel

  5. 上添加JFrame
  6. 致电pack()而非setSize()

  7. 最后致电setVisible(true)

  8. 祝你好运!

答案 3 :(得分:2)

您正在制作setLayout null

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

使用此,

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

EDT上运行UI,而不是在主线程上运行。阅读此post

示例:

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

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

        EventQueue.invokeLater(r);
    }