将图片添加到JFrame

时间:2014-01-01 05:27:47

标签: java swing jlabel embedded-resource imageicon

我要做的就是将照片添加到JFrame

我真的很困惑,并且真的不明白......我已经在这个网站上查找了所有可能的问题,看了其他java的东西,比如论坛。我尽我所能,现在我必须请求帮助。我希望代码清晰易读。谢谢你的帮助。

package zeus;

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

public class Main extends JFrame{

    public static final int WIDTH = 800;
    public static final int HEIGHT = 600;
    public static final int SCALE = 1;

    public static void Launch(){

        JFrame xF = new JFrame("xFrame");
        xF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        xF.setResizable(false);
        xF.setVisible(true);
        xF.setSize(WIDTH*SCALE,HEIGHT*SCALE);
        xF.setLocationRelativeTo(null);
        xF.add(new JLabel(new ImageIcon("/Clicker/xS/cow.png")));

    }

    public static void main(String[] args){

        Launch();

    }

}

非常抱歉混淆,eclipse显示没有错误,我也试图打开一个带有图像的JFrame,我最终可以创建一个按钮来更改int值的值。

3 个答案:

答案 0 :(得分:3)

我能看到的最大问题是......

  • JFrame延伸,但实际上没有使用它......
  • 当不是真的需要时依赖static ......
  • 在实际开始添加任何内容之前调用setVisible。事实上,通常在添加任何内容之前以及在使其可见之后操纵框架属性......

    public class Main {

     public static void main(String[] args){
    
         EventQueue.invokeLater(new Runnable() {
             public void run() {
    
                 JFrame xF = new JFrame("xFrame");
                 xF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 xF.add(new JLabel(new ImageIcon("/Clicker/xS/cow.png")));
                 xF.setResizable(false);
                 xF.setSize(WIDTH*SCALE,HEIGHT*SCALE);
                 xF.setLocationRelativeTo(null);
                 xF.setVisible(true);
    
              }
         }
     }
    

    }

但是既然你从未真正描述过你遇到的问题,那么这些都是猜测......

答案 1 :(得分:1)

我有几个提示:

  • 如果您知道自己的画面尺寸,则无需过度复杂化
  • 尝试使用frame作为JFrame的名称而不是xF,因此更容易查看。
  • 重新排列你的方法,以便setVisible(true);最后。

现在,至于你的代码,我建议你使用两个类:一个用于框架,一个用于面板。

框架类

import javax.swing.JFrame;

public class Apollo
{
    public static void main(String[] args)
    {
    Jframe frame = new JFrame("xFrame");
    frame.setSize(800,600);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(new Poseidon());
    frame.setVisible(true);
    }
}

小组类

import javax.swing.*;
import java.awt.*;

public class Poseidon extends JPanel
{
    public void paintComponent(Graphics g)
    {
    g.setColor(Color.WHITE);
    g.fillRect(0,0,800,600);

    ImageIcon clicker = new ImageIcon("/Clicker/xS/cow.png");
    /*The following are two methods for image sizing,
     *Use the one that best fits your code:
     *
     *g.drawImage(clicker.getImage(), x, y, null); 
     *Fill in the arguments for x and y to locate your upper left corner
     *The image will be in it's original size
     *
     *g.drawImage(clicker.getImage(), x, y, w, h, null);
     *Fill in the arguments for w and h to set the width and height of your image
     *The image will be in it's scaled size
     */
    }
}

答案 2 :(得分:1)

你可以使用 xF.setContentPane(new JLabel(new ImageIcon(image_path)));