我正在学习 Java Swing,我对以下简单代码有一些疑问:
package com.techub.exeute;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class Main{
public static void main(String[] args) {
JFrame frame = new JFrame("FrameDemo");
frame.setMinimumSize(new Dimension(800, 400));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel myLabel = new JLabel("Hello World !!!", SwingConstants.CENTER);
myLabel.setFont(new Font("Serif", Font.BOLD, 22));
myLabel.setBackground(Color.blue);
myLabel.setOpaque(true);
myLabel.setPreferredSize(new Dimension(100, 80));
frame.getContentPane().add(myLabel, BorderLayout.NORTH);
}
}
我的想法是创建一个 JFrame 对象并向其中插入一个 Hello World JLabel 对象并设置一些属性。
我在 main() 方法中执行它。问题是当我执行程序时我什么也没看到!!!为什么?我的代码有什么问题?
谢谢
安德里亚
最佳答案
您正在创建框架但没有显示它。打电话
frame.setVisible(true);
显示它。
另一件事:你不应该在主线程中操作 GUI 组件。相反,创建一个用于创建框架和设置组件的新方法,并在事件调度线程中运行该方法,如 the example from the official tutorial :
import javax.swing.*;
public class HelloWorldSwing {
private static void createAndShowGUI() {
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
关于java - 如何在 Java Swing 中创建一个 hello world?我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18978337/