我正在制作一个节目,但我的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);
}
}
答案 0 :(得分:5)
答案 1 :(得分:5)
我在互联网上查过但我没找到任何东西。
在添加/创建JComponents(frame.add(content);
)之前,JFrame可见
将代码行frame.setVisible(true);
(更好地了解JFrame的所有内容)移至构造函数的末尾
答案 2 :(得分:2)
使用布局。在这种情况下,FlowLayout应该没问题。请勿致电setBounds()
,也不要将布局设置为null
。
在JPanel
然后在JPanel
JFrame
致电pack()
而非setSize()
最后致电setVisible(true)
。
答案 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);
}