gpt4 book ai didi

java - 如何将图像图标设置为 JButton

转载 作者:搜寻专家 更新时间:2023-10-31 19:29:05 25 4
gpt4 key购买 nike

我不太擅长创建 Swing 应用程序。所以我想知道如何将图标设置为 JButton

我的项目结构是这样的:

enter image description here

我在 MainWindow 类中有简单的 JButton:它看起来像这样:

tactButton = new JButton("next tact");

并且我想使用方法 setIcon 为这个按钮设置图像。我的代码如下所示:

tactButton.setIcon(new ImageIcon(getClass().getResource("/images/button_next.jpg")));

但是当我启动应用程序时出现异常:

java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at by.bulgak.conveyor.gui.MainWindow.<init>(MainWindow.java:117)
at by.bulgak.conveyor.gui.MainWindow$1.run(MainWindow.java:46)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

所以我尝试了不同的东西:

  • 将所有图片放在与MainWindow类相同的文件夹中
  • 将图片放在项目根目录
  • 尝试像 tactButton.setIcon(new ImageIcon("/images/button_next.jpg"));

但我有这个异常(exception),或者如果我使用 tactButton.setIcon(new ImageIcon("/images/button_next.jpg")); 我有没有图像的简单按钮。

最后我写了我的图像的绝对路径并且这工作正常(但绝对路径不是好主意)。那么你能帮帮我吗?

我看了问题How do I add an image to a JButton并尝试像那里那样做。

更新

创建按钮和设置图标的完整代码:

tactButton = new JButton("next tact");
tactButton.setSize(100, 100);
tactButton.setIcon(new ImageIcon(MainWindow.class.getResource("/images/button_next.jpg")));
tactButton.addActionListener(new ProcessorNextStepListener(this));

最佳答案

如果您使用的是 Maven,那么您不需要做任何事情。 M2E 将为您打理一切。

将你的源代码放在src/main/java

将你的资源(图片、文本文件等)放在src/main/resources

如果您不使用默认文件夹,那么您应该修改 pom.xml 文件以指示您的源和资源所在的位置。之后,右键单击您的项目,转到 Maven-->更新项目... 并确保选中“从 pom.xml 更新项目配置”框

就是这样。你应该可以开始了。

关于java - 如何将图像图标设置为 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936862/

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