任何人都可以用noob的方式向我解释ImageIcon和Java中的Image类/对象之间有什么区别?谢谢
我正在尝试为Jar文件设置图标图像:
setIconImage(new ImageIcon(getClass().getResource("logo.png")).getImage());
Run Code Online (Sandbox Code Playgroud)
在Mac OS X 10.7.4中运行时出现以下错误:
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Run Code Online (Sandbox Code Playgroud) 我的问题:我希望能够改变资源图像的亮度,并将其三个实例作为ImageIcons.一个亮度为50%(如此暗),另一个亮度为75%(亮度稍高),最后另一个亮度为100%(与原始图像相同).我也想保持透明度.
我尝试了什么:我已经四处寻找,看起来最好的解决方案是使用RescaleOp,但我无法理解.我不知道scaleFactor和偏移是什么.这是我尝试过的代码.
public void initialize(String imageLocation, float regularBrightness, float focusedBrightness, float pressedBrightness, String borderTitle) throws IOException {
BufferedImage bufferedImage = ImageIO.read(ButtonIcon.class.getResource(imageLocation));
setRegularIcon(getAlteredImageIcon(bufferedImage, regularBrightness));
setFocusedIcon(getAlteredImageIcon(bufferedImage, focusedBrightness));
setPressedIcon(getAlteredImageIcon(bufferedImage, pressedBrightness));
setTitle(borderTitle);
init();
}
private ImageIcon getAlteredImageIcon(BufferedImage bufferedImage, float brightness) {
RescaleOp rescaleOp = new RescaleOp(brightness, 0, null);
return new ImageIcon(rescaleOp.filter(bufferedImage, null));
}
Run Code Online (Sandbox Code Playgroud)
电话会是这样的:
seeATemplateButton.initialize("/resources/templateIcon-regular.png", 100f, 75f, 50f, "See A Template");
//I think my 100f, 75f, 50f variables need to change, but whenever I change them it behaves unexpectedly (changes …Run Code Online (Sandbox Code Playgroud) 我一直试图将一个转换ImageIcon为BufferedImage...而且我没有运气.
我有一个预先存在的ImageIcon,需要转换为缓冲图像,用于存在的大量BufferedImage操作.
我找到了几种方法,但所有方法都是CPU密集型的.
如何从中删除图标JOptionPane?
ImageIcon icon = new ImageIcon(image);
JLabel label = new JLabel(icon);
int result = JOptionPane.showConfirmDialog((Component) null, label, "ScreenPreview", JOptionPane.OK_CANCEL_OPTION);
Run Code Online (Sandbox Code Playgroud)

好的,所以我一直在研究这个安静.我对java很新,但认为这个很容易.我已经尝试了几乎所有已经在这个网站上回答的方式,但仍然没有运气,通常当我看到这里时,我能够找到适合我所寻找的答案.有谁知道如何更改JFrame顶角的Java图标.我非常肯定它不是我的文件路径,因为我的所有图像都在同一个文件夹中并且它们都工作,这是我唯一无法工作的.
这是我的程序主菜单的代码的第一部分,一切正常,除非我尝试添加图标图像.我在下面输入的代码中没有任何内容用于JFrame IconImage,我将其删除,因为它不起作用.因此,如果有人知道如何使用这个代码,我将非常感谢,非常感谢您提前!
public class MainFrame
{
private MyPanel main;
private MyPanel2 create;
private MyPanel3 update;
private MyPanel4 find;
JFrame frame = new JFrame("Main Menu:");
public void displayGUI()
{
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
contentPane.setLayout(new CardLayout());
main = new MyPanel(contentPane, this);
create = new MyPanel2(contentPane);
update = new MyPanel3(contentPane);
find = new MyPanel4(contentPane);
contentPane.add(main, "Main Menu");
contentPane.add(create, "Create Part");
contentPane.add(update, "Update Part");
contentPane.add(find, "Find Part");
frame.setLocation(200, 200);
frame.setSize(700, 580);
frame.setContentPane(contentPane);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Java制作一个非常基本的游戏,而我在显示图像时遇到问题JFrame.它曾经为我工作过,现在不是,我看不出我做错了什么.
我已经尝试打印当前的工作目录并更改我的图像匹配的位置.问题很可能是没有得到图像,因为我的(文件查找器或文件阅读器或类似的东西)可以毫无问题地找到它,但我无法正确地将它(或ImageIcon)添加到JLabel,或者那个JFrame.
这是我的代码......
JFrame frame = new JFrame("no image");
ImageIcon image = new ImageIcon("C:/Documents and Settings/user/Desktop/hi/xD/JavaApplication2/image.png");
JLabel imagelabel = new JLabel(image);
frame.add(imagelabel);
Run Code Online (Sandbox Code Playgroud)
在JFrame已经setVisible(true)和pack().
请有人帮我理解出了什么问题.
使用NetBeans将ImageIcon添加到按钮属性.
print.setFont(new java.awt.Font("Serif", 0, 14));
print.setIcon(new javax.swing.ImageIcon(getClass().getResource("/project/print.gif")));
print.setMnemonic('P');
print.setText("Print");
print.setToolTipText("Print");
Run Code Online (Sandbox Code Playgroud)
编译时显示
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at project.Editor.initComponents(Editor.java:296)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我想提前感谢您抽出时间阅读我的问题,我将非常感谢您提供的任何评论,答案,见解,技术和批评.
我正在寻找一种有用的方法来更改Java应用程序的桌面图标.我已经调查了几天,但是没有找到准确的结果.
在您将其标记为重复并将其称为重复之前,我已阅读:如何更改Java中的默认应用程序图标?对其他提出这个问题的人),但这并没有解决我的具体问题.我知道他们的方法使用url位置而不是导入,但我试图学习如何使用导入(如果这样,实际上可能).当我尝试使用他们的方法来改变源位置时.除此之外,url示例似乎不适用于存储在计算机上的文件.当我尝试运行它时,我收到"未捕获的错误"消息.
我使用以下格式声明我已导入NetBeans的图像:
Image image = new ImageIcon("imported.png").getImage();
frame.setIconImage(image);
Run Code Online (Sandbox Code Playgroud)
现在这适用于工具栏中显示的图标,它也出现在框架的左上角,但是当我清理和构建它时,我仍然将Java咖啡杯作为应用程序的图标.
有关我用于尝试此操作的代码的其他资源:
import java.awt.Image;
import javax.swing.*;
public class Check {
JFrame frame;
public static void main(String[] args) {
new Check().go();
}
private void go() {
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image image = new ImageIcon("owl.gif").getImage();
frame.setIconImage(image);
frame.setVisible(true);
frame.setSize(300, 300);
}
}
Run Code Online (Sandbox Code Playgroud)
"owl.gif"位是我通过单击和拖动方法导入到NetBeans中的内容(如我在其中一本专注于NetBeans的书籍中所述).
我正在寻找一种方法来创建一个文件,我已经在我的计算机上保存了应用程序的桌面图标.
Java JLabel图标显示的像素变形JFrame。对于不同的png图像(全部为32x32),这会始终发生。我没有缩放图像,它们显示在程序32x32中,我已使用getWidth和getHeight在JLabel上对其进行了验证。每次运行程序时,变形会出现在同一位置,而不是随机出现。
在此屏幕快照中,您可以看到一系列JLabel图标,每个图标的影响方式不同。
从侧面调整窗口大小时,随着图标与窗口一起移动,变形会像垂直线一样在图标上移动。
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
public class FrameApp extends JFrame
{
public static void main(String[] args) throws IOException
{
FrameApp frameApp = new FrameApp();
}
private FrameApp() throws IOException
{
BufferedImage image;
URL url = new URL("http://i.stack.imgur.com/L5DGx.png");
image = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(image));
add(label);
pack();
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我在Windows 8.1 64位上使用JDK 11.0.3,Java SE Runtime Environment构建1.8.0_202。