Java swing,无法使图像工作

标签 java image swing

我编写了一个简单的程序只是为了绘制图像,但我根本无法让它工作。它应该只在框架内的 Pane 中显示 1 张图片。附注有一些我不需要的导入,我尝试了很多不同的东西。

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.*;


import javax.imageio.ImageIO;

public class ShowImage {
private Graphics g;
private BufferedImage lionImage=null;
private JFrame frame;
private JPanel totalGUI,values;

 public static void main(String[] args) {
       SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }

   });
   }
 public JPanel createContentPane(){
     totalGUI = new JPanel();


        totalGUI.setLayout(null);

        values = new JPanel();
        values.setLayout(null);
        values.setLocation(10, 10);
        values.setSize(490, 290);
        values.setBackground(Color.WHITE);
        totalGUI.add(values);
        getImage();
        Graphics g = values.getGraphics();

        g.drawImage(lionImage,100,100,null);

        totalGUI.setOpaque(true);
        return totalGUI;
 }


    private static void createAndShowGUI() {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Calculator");

        ShowImage demo = new ShowImage();
        frame.setContentPane(demo.createContentPane());

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 300);
        frame.setVisible(true);

}

void getImage(){
    try{
    lionImage =ImageIO.read(new File("imgres.jpg"));// *see note
    }catch (IOException e){}
    }

}

我收到错误。我不知道问题是什么。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ShowImage.createContentPane(ShowImage.java:43)
at ShowImage.createAndShowGUI(ShowImage.java:55)
at ShowImage.access$0(ShowImage.java:50)
at ShowImage$1.run(ShowImage.java:23)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

最佳答案

这是因为你的gnull 。当 JPanel 的路径尚未显示在屏幕上时,就会发生这种情况。

为了在JPanel内绘制图像,您通常会创建一个新类 extends JPanel并覆盖其 paintComponent(Graphics g)方法。请参阅this例如,您需要调用 drawImage()方法。

我建议你永远不要捕获 Exception并且不要以任何方式处理它。您可以在 getImage() 中执行此操作您尝试加载图像的方法。

关于Java swing,无法使图像工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14811937/

相关文章:

java - JFileChooser 在 Linux 下不是模态的

java - 如何设置 JOptionPane 的位置

java - 重复选择或使用 IN 子句,哪个更快?

ios - 使用图形 API 将图像发布到 Facebook 时始终获得 "(#324) Requires upload file"

java - 一对多关系在不使用 "distinct"的情况下获取重复对象。为什么?

javascript - 来自 URL 的 src 图像有时会上下颠倒或横向显示

ios - 如何添加多个 ImageView 并且每个 ImageView 都可以做图像选择器?

java - 如果最低行被编辑,则将空行插入 jtable

Java:如何调试作为另一个应用程序的插件的模块/jar

java - 在文件中从 Java 编写 Long 并在 C++ 中读取它