Java 图形用户界面不';t显示我为其设置的背景(编译)
我正在尝试为我正在尝试制作的游戏创建一个GUI,这个游戏是不相关的 根据我的说法,这应该做的是向我展示一个GUI,一个框架,一个图片,然而,仅仅是框架显示,图像就不存在了:( 谁能告诉我我做错了什么? 谢谢你抽出时间Java 图形用户界面不';t显示我为其设置的背景(编译),java,bluej,Java,Bluej,我正在尝试为我正在尝试制作的游戏创建一个GUI,这个游戏是不相关的 根据我的说法,这应该做的是向我展示一个GUI,一个框架,一个图片,然而,仅仅是框架显示,图像就不存在了:( 谁能告诉我我做错了什么? 谢谢你抽出时间 import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.ImageIcon; import javax.swing.JLabel; impor
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();
}
});
}
}
此示例应向您显示执行所需操作的正确顺序方法是启动swing应用程序的方式。这使用了您可以阅读的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();
}
});
}
}
既然你只是在JFrame内部创建一个JFrame,为什么还要扩展它呢?另外,我认为问题在于你做事情的顺序,例如,你正在构建/显示框架,然后添加组件。我现在也意识到并删除了这一点,我会编辑,虽然结果是一样的,我会研究一下,尝试过,同样的结果,但也许我只是这么做了我不太明白你在说什么,你能举个例子吗?把你新编辑过的代码作为对你的问题的编辑发布。举个简单的例子,
frame.setVisible()
可能是您添加所有组件并打包框架后最后调用的内容。您可以反复编辑它。您说过您更改了添加组件与构建/显示框架的顺序。显示出来。谢谢!帮了我很多忙;)没问题。我只是试着先解决问题,而不是直接给出答案。我发现这有助于人们更好地理解/学习。argh仍然不起作用。。。但是我现在有正确的设置,我会编辑是的,请用你现在更新的代码编辑你的问题,这样我就可以查看了。我所发布的内容在我这里的两台不同的机器上运行良好。非常感谢您的时间,感谢您(男:),也感谢您询问其他用户!)