首页 / JAVA / 在Java Swing中显示图像
在Java Swing中显示图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java Swing中显示图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3733字,纯文字阅读大概需要6分钟。
内容图文
![在Java Swing中显示图像](/upload/InfoBanner/zyjiaocheng/711/bef26345c116485ea6db1a085b6e3575.jpg)
public class MinesweeperMenu extends MinesweeperPanel{
private JPanel picture = new JPanel();
private JButton play = new JButton("Play");
private JButton highScores = new JButton("High Score and \nStatistics");
private JButton changeMap = new JButton("Create Custom \nor Change Map");
private JButton difficulty = new JButton("Custom or\nChange Difficulty");
private JButton user = new JButton("Change User");
Image img;
public MinesweeperMenu()
{
// Set Layout for the menu
LayoutManager menuLayout = new BoxLayout(menu, BoxLayout.Y_AXIS);
menu.setLayout(menuLayout);
// Set Layout for the window
LayoutManager windowLayout = new BorderLayout();
window.setLayout(windowLayout);
// Add buttons to the panels
menu.add(play);
menu.add(highScores);
menu.add(changeMap);
menu.add(difficulty);
menu.add(user);
// Add picture to the frame
try{
File input = new File("./setup/images/MineMenuPicture.jpg");
img = ImageIO.read(input);
}
catch(IOException ie)
{
System.out.println(ie.getMessage());
}
// Add action listeners
changeMap.addActionListener(new ChangeMapListener());
}
public void paintComponent(Graphics g)
{
// POSITION OF THE PICTURE
int x = 650;
int y = 585;
g.drawImage(img, x, y, null);
}
public void displayFrame()
{
// Display Frame
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
public static void main(String[] args)
{
MinesweeperMenu menu = new MinesweeperMenu();
window.pack();
menu.displayFrame();
window.repaint();
}
}
public class MinesweeperPanel extends JFrame{
public static final Color COLOR_KEY = new Color(220, 110, 0);
// Initialize all the objects
public static JFrame window = new JFrame("Minesweeper++");
public static JPanel menu = new JPanel();
// Close the current window
public static void close()
{
window.setVisible(false);
window.dispose();
}
}
我无法让我的图像显示在框架中.我已经尝试了所有的东西,但是我得到的印象是,由于我是Java Swing的新手,所以我没有意识到这是一个错误.任何帮助将不胜感激.
解决方法:
你有一个非常令人困惑的程序结构让你自己变得困难,我建议你简化很多事情.
首先,您当前的MinesweeperMenu类不需要扩展MinesweeperPanel,后者类也不需要扩展JFrame.然后你在其他地方有一个静态JFrame – 这是太多的JFrame,并且要启动,你试图在一个JFrame中显示你的图像,但是显示另一个没有图片的那个.你的程序只需要一个JFrame,它应该可以创建,填充其内容,打包并显示在一个地方,而不是像你一样在这里散落.
你试图在paintComponent覆盖中显示图片,但是这个方法永远不会被调用,因为你的类扩展了JFrame(最终)并且JFrame没有这个方法.你正在使用正确的方法,但是类应该扩展JPanel,你应该在paintComponent方法块上面有一个@Override注释,以确保你实际上覆盖了父方法.
你应该摆脱这个程序中所有静态的东西.这里唯一静态的应该是main方法,也许是一些常量,但就是这样.
这里有更多的错误,我没有多少时间来讨论所有这些错误.考虑从头开始,从小开始,使小位工作,然后将它们加在一起.
例如,首先创建一个非常小的程序,尝试将图像读入Image对象,将其放在ImageIcon中,将ImageIcon放入JLabel,并在JOptionPane中显示JLabel,这很简单,只是为了看看你是否可以读取图像确定,例如,这样的事情:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class TestImages {
// *** your image path will be different *****
private static final String IMG_PATH = "src/images/image01.jpg";
public static void main(String[] args) {
try {
BufferedImage img = ImageIO.read(new File(IMG_PATH));
ImageIcon icon = new ImageIcon(img);
JLabel label = new JLabel(icon);
JOptionPane.showMessageDialog(null, label);
} catch (IOException e) {
e.printStackTrace();
}
}
}
然后,当您完成此操作时,查看您是否现在可以创建一个在其paintComponent方法中显示相同Image的JPanel,并在JOptionPane中显示此JPanel.
然后创建一个JFrame并在JFrame中显示保存图像的JPanel.
通过连续迭代,您将测试概念,纠正错误并构建程序.
内容总结
以上是互联网集市为您收集整理的在Java Swing中显示图像全部内容,希望文章能够帮你解决在Java Swing中显示图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。