-1

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

这是我的代码。

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() {
    }
}
4

2 回答 2

0

你可以使用paint函数

public void paint(Graphics g) {

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

并且不要忘记导入import javax.swing.ImageIcon;

于 2013-10-31T06:21:27.380 回答
0

根据您的需要,有多种方法可以实现...

你可以...

使内容窗格 a JLabel,将图标设置为它...

public void init() {
    JLabel label = new JLabel(new ImageIcon(getClass().getResource("/path/to/resource")));
    setContentPane(label);
    setLayout(...);
    //...
}

你可以...

使用GraphicsAPI,例如...

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 中,并且在运行时可从类路径的上下文中获得......

于 2013-10-31T06:36:34.260 回答