我想用 Java 创建一个简单的 GUI。我知道创建 JLabel
等的基础知识。但是,我找不到为什么我的 JLabel
没有显示在屏幕上。这是我的代码:
package test;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.*;
import javax.swing.*;
public class A1Panel extends JPanel implements ActionListener {
JLabel firstInt;
public void init() {
makeComponents();
makeLayout();
}
private void makeComponents() {
firstInt = new JLabel("First argument");
firstInt.setFont(new Font("Helvetica", Font.BOLD, 16));
firstInt.setBackground(Color.lightGray);
firstInt.setVisible(true);
firstInt.setHorizontalAlignment(SwingConstants.CENTER);
}
private void makeLayout() {
add(firstInt);
}
public void actionPerformed(ActionEvent e) {
}
}
然后我使用一个名为 GUI 的不同类将我的 JPanel
添加到我的 JFrame
:
import test.A1Panel;
public class GUI {
public static void main(String[] args) {
JFrame frame = new JFrame("Testing GUI");
frame.setLayout( new GridLayout(1,3));
JPanel panel = new A1Panel();
panel.setBorder( BorderFactory.createRaisedBevelBorder() );
frame.add( panel);
frame.setSize(800,600);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
}
}
当我点击编译时,我得到的是一个包含三个空 面板的简单框架。我不明白为什么我的 JLabel
不在第一个面板中,因为我已将它添加到我的框架中。我错过了什么吗?
最佳答案
框架不是空的,面板是。在您的代码中,我没有看到对方法 init()
或 makeComponents()
的调用。事实上,我会将您的 init()
方法变成构造函数,如下所示:
public A1Panel() {
makeComponents();
makeLayout();
}
另一种替代方法是在声明 JPanel panel = new A1Panel()
之后调用 panel.init()
关于Java GUI 不会显示 JLabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520105/