【问题标题】:Can someone help me understand how ImageIcon works for java?有人可以帮助我了解 ImageIcon 如何适用于 java 吗?
【发布时间】:2020-01-22 07:28:28
【问题描述】:

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

我已经在不同的网站之间寻找答案,但我尝试过的示例代码都没有成功。 Stackoverflow 过去曾帮助通过其他人提出的各种问题来学习 Java,所以我自己注册了一个帐户来问一个问题。我可能很笨,但尽管我尝试过,但我的形象从未出现过。在之前放弃它之后,我每隔几个月就会重新尝试理解 swing这让我很困惑。

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。

【问题讨论】:

  • 试试这个代码JScrollPane jsp = new JScrollPane(lable); frame.setContentPane(jsp);
  • 上面的代码是从...复制粘贴的 - 坚持使用Swing Tutorial 中的代码示例。不仅代码更准确,而且教程提供了代码解释。

标签: java swing imageicon


【解决方案1】:
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 的 CENTER,这将不起作用。该按钮取代了滚动窗格。

您应该使用:

frame.getContentPane().add(jsp, BorderLayout.CENTER);
frame. setSize(1000, 700);
JButton button = new JButton("Testing");
frame.getContentPane().add(button, BorderLayout.PAGE_END);

阅读 Layout Manager 上的 Swing 教程部分,了解更多信息和 BorderLayout 的工作示例。

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

此外,在进行测试时,最好执行以下操作:

JLabel label = new JLabel("Icon label");
label.setIcon(ii);

这样,如果你为图片指定了错误的路径,你至少会看到标签的文字,你就会知道问题出在路径上,而不是布局代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多