gpt4 book ai didi

java - java Jframe上的图像渲染

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:23 28 4
gpt4 key购买 nike

我已经从 C# 转到 java,但无法在 java Jframe 上呈现图像。是否有像这样呈现图像的任何 ImageBox 组件或 JFrame 方法:

JPictureBox box=new JPictureBox("image_path");
JFrame fram=new JFrame();
fram.add(box);

最佳答案

此代码创建一个 JFrame 并在该框架中显示路径为 f 的文件。正如一位评论者所建议的那样,它使用了 JLabel

    public static void display(String f) throws Exception {
JFrame jf = new JFrame();
JLabel jl = new JLabel(new ImageIcon(ImageIO.read(new File(f))));
jf.add(jl);
jf.setBounds(0, 0, 200, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

请注意,您可能希望更好地处理异常,设置图​​像的大小(您可以询问 ImageIO.read() 的结果 for .getWidth().getHeight()),等等。

这是一个稍微复杂的示例,其中图像会更改大小以填充其边界:

    public static void display(final String f) throws Exception {
JFrame jf = new JFrame();
JPanel jp = new JPanel() {
private BufferedImage bi = ImageIO.read(new File(f));
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
RenderingHints rh = new RenderingHints(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.setRenderingHints(rh);

int w = getWidth();
int h = getHeight();
g.drawImage(bi, 0, 0, w, h, null);
}
};
jf.add(jp);
jf.setBounds(0, 0, 400, 200);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

注意:阅读评论中的链接后,我必须推荐 MadProgrammer 关于该主题的详尽帖子。这个答案的唯一优点是它的长度很短 - 但如果你想要 much better down-scaling , ratio-preserving scaling或其他与图像相关的深入内容,请点击这些链接。

关于java - java Jframe上的图像渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31581374/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com