Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将背景图像添加到小程序框架中_Java_Image_Swing_Background Image_Japplet - Fatal编程技术网

Java 将背景图像添加到小程序框架中

Java 将背景图像添加到小程序框架中,java,image,swing,background-image,japplet,Java,Image,Swing,Background Image,Japplet,我正在尝试向小程序添加背景图像,但不知道如何添加 这是我的密码 public class SAMmain extends JApplet{ public JMenuBar mbar=new JMenuBar(); public JMenu newStudent,viewtudent,markAttendence; public void init() { setSize(1366, 768); setJMenuBar(mb

我正在尝试向小程序添加背景图像,但不知道如何添加

这是我的密码

public class SAMmain extends JApplet{    
    public JMenuBar mbar=new JMenuBar();    
    public JMenu newStudent,viewtudent,markAttendence;

    public void init() {
        setSize(1366, 768);
        setJMenuBar(mbar);
        newStudent= new JMenu("New Student  ");
        mbar.add(newStudent);
        viewtudent= new JMenu("View student");      
        mbar.add(viewtudent);
        markAttendence= new JMenu("Mark Attendence");
        mbar.add(markAttendence);
    }

    public void start() {
    }   
     public void stop() {
    }
}

您可以使用
paint
功能

public void paint(Graphics g) {

        ImageIcon i = new ImageIcon("path");
        g.drawImage(i.getImage(), x, y, this);
    }

别忘了导入
import javax.swing.ImageIcon

根据您的需要,可以通过多种方式实现这一点

你可以。。。 将内容窗格设置为
JLabel
,将图标设置为它

public void init() {
    JLabel label = new JLabel(new ImageIcon(getClass().getResource("/path/to/resource")));
    setContentPane(label);
    setLayout(...);
    //...
}
你可以。。。 使用
图形
API,例如

public class BackgroundPane extends JPanel {

    private BufferedImage img;

    public BackgroundPane() {
        try {
            img = ImageIO.read(getClass().getResource("/path/to/resource"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public Dimension getPreferredSize() {
        return img == null ? new Dimension(200, 200) : new Dimension(img.getWidth(), img.getHeight());
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (img != null) {
            Graphics2D g2d = (Graphics2D) g.create();
            g2d.drawImage(img, 0, 0, this);
            g2d.dispose();
        }
    }
}
然后您可以将其设置为小程序的内容窗格

public void init() {
    BackgroundPane background = new BackgroundPane();
    setContentPane(background);
    setLayout(...);
    //...
}
使用这样的东西的唯一真正原因是因为你想以某种特殊的方式处理图像,比如它的位置、大小、alpha等等


这一切都假设映像已打包到应用程序的一个JAR中,并且在运行时可从类路径的上下文中获得…

我是否应该将映像复制到src文件夹中?既然您已经破坏了绘制链,在applet上不会正确绘制任何内容。..。@M.ShamsTabrez仅在项目文件夹中复制您的图像。如果是jpg文件,则在路径中写入'yourimage.jpg'。2) 使用
ImageIcon
加载图像不会产生您可能在
ImageIO中看到的那种有用的错误消息。读取(…)
3)对绘制方法的任何重写都应该调用super方法。-好的-那么在4个LOC中有3条有问题的建议。那还不错,太可怕了-1我是java的新手。。。。。我已经将该方法写入init()方法,但它不起作用