显示图像JFrame

时间:2015-05-13 12:55:51

标签: java

我是Java的新手,我试图在JFrame上显示图像。 我有主要课程:

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class PingPong extends JPanel{

    Ball ball = new Ball(this); 

    @Override
    public void paintComponent(Graphics g){
        super.paintComponent(g);
    }

    public static void main(String[] args){
        /* Creating the frame */
        JFrame frame = new JFrame();
        frame.setTitle("Ping Pong!");
        frame.setSize(600, 600);
        frame.setBounds(0, 0, 600, 600);
        frame.getContentPane().setBackground(Color.darkGray);
        frame.add(new JLabel(new ImageIcon("images/Table.png")));
        frame.setVisible(true); 
    }

}

和Ball类:

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JPanel;


public class Ball {
    int x,y;
    ImageIcon ball = new ImageIcon("images/Ball.png");
    Image ballImage = ball.getImage();

    public Ball(JPanel panel){
        this.x = panel.getWidth()/2;
        this.y = panel.getHeight()/2;
    }
    public void repaint(Graphics g){
        g.drawImage(ballImage, x, y, null);
    }
}

我想在主要中显示Ball图像。 我该怎么办?

我看到了一些带有repaint()和paintComponent的东西。 我只是想在画框上画出球像。 提前谢谢!

2 个答案:

答案 0 :(得分:1)

你必须在main方法中使用ball类。在任何方法中都没有实例化的球对象,只有Pong类中的Ball类的实例。

您也永远不会在main方法中创建的框架中绘制方法。

答案 1 :(得分:1)

您需要将自定义组件PingPong添加到frame。然后将调用自定义paintComponent(Graphics g)

其次将图纸代码添加到paintComponent(Graphics g)

public class PingPong extends JPanel {

  private static final long serialVersionUID = 7048642004725023153L;

  Ball ball = new Ball();

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    ball.paint(g);
  }

  public static void main(String[] args) {
    /* Creating the frame */
    JFrame frame = new JFrame();
    frame.setTitle("Ping Pong!");
    frame.setSize(600, 600);
    frame.setBounds(0, 0, 600, 600);
    frame.getContentPane().setBackground(Color.darkGray);
    frame.add(new PingPong());
    frame.setVisible(true);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

}