我正在尝试为我想要制作的游戏创建一个GUI,游戏无关紧要。
根据我应该做的是向我展示一个带有框架和图片的GUI,然而,只有框架显示,图像无处可寻:(有谁能告诉我我做错了什么? 感谢您的时间!
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.*;
public class Graph
{
int maxX,maxY;
private JFrame frame;
Graph()
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
maxX = screenSize.width;
maxY = screenSize.height;
frame = new JFrame("My Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(maxX, maxY);
frame.setLocationRelativeTo(null);
JLabel label = new JLabel(icon);
JPanel panel = new JPanel(new BorderLayout());
panel.add(label, BorderLayout.CENTER);
frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
public String g()
{
return this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath().replaceAll("´ 20", " ");
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Graph g = new Graph();
}
});
}
}
答案 0 :(得分:0)
此示例应显示执行所需操作的正确顺序。此外,SwingUtilities.invokeLater()
方法是您应该启动swing应用程序的方式。这使用了您可以阅读的有关here的EDT。另一个注意事项是你设置了框架的大小,但是当它显示时它会小得多。那是因为你使用了frame.pack()
来确保只有你真正需要的空间用完了。
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Graph {
JFrame frame;
public Graph() {
frame = new JFrame("My Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1366,770);
frame.setLocationRelativeTo(null);
JLabel label = new JLabel("SomeLabel");
JPanel panel = new JPanel(new BorderLayout());
panel.add(label, BorderLayout.CENTER);
frame.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Graph g = new Graph();
}
});
}
}