我和制作一个程序使用基本的GUI涉及按钮,框架,和面板,一切都很好,直到我试图加载一个图像从我的项目文件夹。当我添加代码行时
try{
titleImage = ImageIO.read(new File("mouse_title_resize.png"));
}
catch(Exception e){}
在我运行程序之后,我的整个框架就变成了空白,而在它上面有一些JButtons之前。在try-catch行之前,我所有的代码都工作得很好,我测试了一下,看看唯一破坏它的是这行代码。我没有收到任何错误或任何东西,我有我的项目文件夹中的图像,似乎图像加载很好,除了它不会出现在框架上,框架上的所有其他东西都消失了。我只是不明白为什么当我加载图像时,它清除了我的整个框架。
以下是完整的代码:
这是扩展JFrame的类
包Mouse.click.game;
导入java.awt.Dimension;
导入java.awt.Point;
//Constants to define the frame width and height including borders
public final int FRAME_WIDTH = 600;
public final int FRAME_HEIGHT = 600;
//Dimension from Toolkit to be able to get width and height of screen
public Dimension sizeTool = Toolkit.getDefaultToolkit().getScreenSize();
//Using sizeTool to get width of screen
public double xResolution = sizeTool.getWidth();
//Using sizeTool to get height of screen
public double yResolution = sizeTool.getHeight();
//Creating a point object that is defined as the center of the screen
public Point middleOfScreen = new Point((int) (xResolution / 2) - (FRAME_WIDTH / 2), (int) (yResolution / 2) - (FRAME_HEIGHT / 2));
public MouseClickGame() {
super("WELCOME :D");
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocation(middleOfScreen);
add(new MouseClickPanel());
}
public static void main(String[] args) {
//Calling constructor
MouseClickGame mainClickGame = new MouseClickGame();
}
包Mouse.click.game;
导入java.awt.Dimension;
导入java.awt.image.BufferedImage;
导入javax.swing.jlabel;
导入javax.swing.jPanel;
公共类MouseClickPanel扩展JPanel{
JButton buttonPlay = new JButton("Play");
JButton buttonContinue = new JButton("Continue");
JButton buttonOptions = new JButton("Options");
JButton buttonExit = new JButton("Exit");
BoxLayout boxLay = new BoxLayout(this, BoxLayout.Y_AXIS);
Dimension menuButtonSize = new Dimension(300, 30);
Dimension spacingBetweenButtons = new Dimension(0, 30);
BufferedImage titleImage;
public MouseClickPanel() {
try {
titleImage = ImageIO.read(new File("C:\\Users\\Justin\\Desktop\\mouse_title.png"));
} catch (IOException e) {
}
setLayout(boxLay);
add(Box.createVerticalGlue());
add(new JLabel(new ImageIcon(titleImage)));
//Adding glue to force buttons away from top of panel
add(Box.createVerticalGlue());
add(buttonPlay);
//Vertical spacing between buttons
add(Box.createRigidArea(spacingBetweenButtons));
add(buttonContinue);
add(Box.createRigidArea(spacingBetweenButtons));
add(buttonOptions);
add(Box.createRigidArea(spacingBetweenButtons));
add(buttonExit);
//Adding glue to force buttons away from bottom of panel
add(Box.createVerticalGlue());
//Aligning all buttons to centered horizontally
buttonPlay.setAlignmentX(Box.CENTER_ALIGNMENT);
buttonContinue.setAlignmentX(Box.CENTER_ALIGNMENT);
buttonOptions.setAlignmentX(Box.CENTER_ALIGNMENT);
buttonExit.setAlignmentX(Box.CENTER_ALIGNMENT);
//Setting button sizes
buttonPlay.setMaximumSize(menuButtonSize);
buttonContinue.setMaximumSize(menuButtonSize);
buttonOptions.setMaximumSize(menuButtonSize);
buttonExit.setMaximumSize(menuButtonSize);
}
}
从字面上看,如果我得到titleImage=并添加(新的JLabel)行,一切都恢复正常
我猜你只是把路走错了--一个常见的错误。在这种情况下,您应该得到一个异常,如下所示:
Exception in thread "main" javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at jonathanrmiproject.MyProject.main(JonathanRmiProject.java:24)
这个简单的例子对我很有效:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.naming.NamingException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MyProject {
public static void main(String[] args) throws NamingException, IOException {
BufferedImage img = ImageIO.read(new File("myimage.jpg"));
JLabel label = new JLabel(new ImageIcon(img));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.pack();
f.setLocation(200, 200);
f.setVisible(true);
}
}
我使用的是Netbeans IDE,并将图像文件保存到“C:\users\david.sharpe\myproject\myimage.jpg”。
我应该补充的是,如果不是这样,而你确实有正确的路径,那么你需要发布一个更详细的问题,以便有人可以帮助你。包括重现问题的代码。
问题内容: 我知道互联网上有成千上万个示例,但是对于脚本,我已经必须在检索数据时显示加载的gif图像。我的Java知识很差,因此我想问如何更改以下内容: 我的div在这里: 谢谢。约翰 问题答案: 假设您在页面上某处有一个标签,其中包含您的加载消息: 您可以在ajax调用中添加两行:
问题内容: 我正在尝试从我正在编写的iOS 8框架(在Swift中)加载图像。我正在使用Xcode 6 Beta 6 如果图像存储在我的框架中,则此代码不起作用(即加载图像): 如果映像存储在主机应用程序(使用框架)中,则将正确加载映像(从框架内的代码)。 我可以看到该阶段包含了框架。 我还将故事板文件用作框架中的资源。并正确加载。 我尝试重命名框架的Images.xcassets以避免与主机应用
我试图创建一个小行星游戏,但我已经在一开始就很挣扎了:我想在游戏开始前创建一个倒计时。为了做到这一点,我使用了一个计时器,当按下按钮“开始”时开始,它(应该)每秒钟加载一个,然后显示在一个上。 在我加上计时器之前,整个程序运行得很好。然而,图像仍在绘制中,的方法仍在完全使用。但是,图像不会出现在我的上。 有人能发现错误吗?我真的不明白问题是什么,虽然我对计时器不熟悉,所以如果我做的事情真的很愚蠢,
我的窗口(SWT)中有以下UI布局: null null 如果我删除它,那么闪烁和重复的调用就消失了,但是我仍然不能显示任何大于5x5的图像,它们根本不会显示。 这是怎么回事..?我应该切换到GridLayout吗?我基本上只想显示两个组,每个组将包含一个字段/画布的垂直列表。
如何显示一个进度条,同时获取图像从URL在线圈。?
问题内容: 我目前正在使用一个Web应用程序,该应用程序的页面显示一个图表(.png图像)。在页面的另一部分上,有一组链接,单击这些链接后,整个页面将重新加载,并且外观与之前完全相同,除了页面中间的图表。 我要做的是单击页面上的链接后,页面上的图表才更改。由于页面大约100kb大,这将极大地加快处理速度,并且真的不想为了显示此页面而重新加载整个页面。 我一直在通过JavaScript执行此操作,到