首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JInternalFrame图像显示;

JInternalFrame图像显示;
EN

Stack Overflow用户
提问于 2011-08-28 21:16:17
回答 1查看 2.9K关注 0票数 1

我尝试将图像添加到JInternalFrame。我的画图()看起来像这样:

代码语言:javascript
复制
    public void paint (Graphics g) {
        //this should draw the loaded image
        if (bufferedImage != null) {
            g.drawImage(bufferedImage, getSize().width/2 - bufferedImage.getWidth()/2,
            getInsets().top+20, this);
        }
    }   

图像确实加载并显示,但窗口标题栏(应该具有名称、最小、最大和关闭的标题栏)消失。当我将鼠标移动到它们应该在的位置时,最小/最大/关闭按钮重新出现,并且当我将鼠标移动到标题栏上时,我可以拖动整个窗口。

我应该使用其他方法而不是paint()方法吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2011-08-28 21:24:45

除非您有充分的理由直接绘制到JInternalFrame中,否则为什么不创建一个new JLabel(new ImageIcon(bufferedimage))并将其直接add()JInternalFrame

举个例子:

代码语言:javascript
复制
import java.awt.BorderLayout;
import java.awt.Image;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;

public class PictureDesktop extends JDesktopPane {

    public static void main(final String[] args) throws IOException {
        // some Wikipedia Commons Pictures of the Day
        final URL url1 = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Hacienda_jaral_de_berrios.jpg/300px-Hacienda_jaral_de_berrios.jpg");
        final URL url2 = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/c/cc/Magellanic_penguin%2C_Valdes_Peninsula%2C_e.jpg/300px-Magellanic_penguin%2C_Valdes_Peninsula%2C_e.jpg");
        final URL url3 = new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Marmolada_Sunset.jpg/300px-Marmolada_Sunset.jpg");

        final PictureDesktop desktop = new PictureDesktop();
        desktop.addPicture(ImageIO.read(url1));
        desktop.addPicture(ImageIO.read(url2));
        desktop.addPicture(ImageIO.read(url3));

        final JFrame frame = new JFrame("Pictures");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(BorderLayout.CENTER, desktop);
        frame.setSize(720, 480);
        frame.setVisible(true);
    }

    public void addPicture(final Image image) {
        add(createFrame(image));
    }

    private static int frames;

    private JInternalFrame createFrame(final Image image) {
        frames++;

        final JInternalFrame frame = new JInternalFrame("Picture " + frames);
        frame.add(BorderLayout.CENTER, new JLabel(new ImageIcon(image)));
        // without pack and setVisible, the frame isn't shown
        frame.pack();
        frame.setVisible(true);

        // cascade frames 
        frame.setLocation(40 * frames, 40 * frames);

        return frame;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7221197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档