首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能帮我理解一下ImageIcon是如何在java上工作的吗?

有人能帮我理解一下ImageIcon是如何在java上工作的吗?
EN

Stack Overflow用户
提问于 2019-09-22 00:01:42
回答 1查看 37关注 0票数 0

所以我有大约一年5/12个月的使用java的经验,但是我从来没有做过骨架之外的任何东西。如果有人能帮助我理解如何使用swing使我的计算机中的图像可见,我将非常感激。

我在不同的网站之间尝试寻找答案,但我尝试过的示例代码都没有成功。Stackoverflow过去通过别人问的各种问题来帮助学习java,所以我自己也做了一个账号来问一个问题。我可能是非常愚蠢,但我的形象从来没有出现过,尽管我已经尝试过。在之前放弃swing之后,我每隔几个月就会回来尝试理解swing,虽然我觉得我已经掌握了一些基本概念,比如应该将某些东西设置为可见,如何制作/添加JFrame等,但这总是让我感到困惑。

代码语言:javascript
复制
import javax.swing.*;
import java.awt.*;

public class Main extends JFrame {

public static void main(String[] args) {
        JFrame frame = new JFrame("main");
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        ImageIcon ii = new ImageIcon("C:\\Users\\plasm\\IdeaProjects\\Shdo\\src\\mario.jpg");
        JLabel lable = new JLabel(ii);
        JScrollPane jsp = new JScrollPane(lable);
        frame.getContentPane().add(jsp);
        frame. setSize(1000, 700);
        JButton button = new JButton();
        button.setSize(new Dimension(300, 300));
        button.setLocation(500, 350);
        frame.getContentPane().add(button);

        frame.setVisible(true);

    }
}

上面的代码是从https://www.daniweb.com/programming/software-development/threads/379864/add-image-and-button-to-jframe复制粘贴而来的,但是,它只显示了设置尺寸的基本白色JFrame。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-22 00:06:01

代码语言:javascript
复制
frame.getContentPane().add(jsp); // problem
frame. setSize(1000, 700);
JButton button = new JButton();
button.setSize(new Dimension(300, 300)); // does nothing
button.setLocation(500, 350); // does nothing
frame.getContentPane().add(button); //problem

问题是JFrame的内容窗格的默认布局管理器是BorderLayout。您正在尝试将两个组件添加到BorderLayout的中心,但这将不起作用。该按钮将替换滚动窗格。

相反,您应该使用:

代码语言:javascript
复制
frame.getContentPane().add(jsp, BorderLayout.CENTER);
frame. setSize(1000, 700);
JButton button = new JButton("Testing");
frame.getContentPane().add(button, BorderLayout.PAGE_END);

有关BorderLayout的更多信息和工作示例,请阅读Layout Manager上的Swing教程中的部分。

正如第一条评论中提到的。不需要getContentPane()。框架会自动将组件添加到内容窗格中。

此外,在进行测试时,最好这样做:

代码语言:javascript
复制
JLabel label = new JLabel("Icon label");
label.setIcon(ii);

这样,如果您为图像指定了错误的路径,您至少会看到标签的文本,您将知道问题出在路径中,而不是布局代码中。

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

https://stackoverflow.com/questions/58041902

复制
相关文章

相似问题

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