如何使用Netbeans将Image放在JPanel上?
无论如何将String转换为ImageIcon?
有点像这里的代码:http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/Createaniconinmemory.htm
我希望将String显示为ImageIcon,而不是红色矩形.
我的目的是除了Jtree节点之外还显示这个动态创建的ImageIcon.
我目前正在读一本关于java的书,目前正在研究swing图形用户界面组件。当我这样做时,我偶然发现了一个代码示例,其中作者以一种非常不寻常的方式在 JButton 上设置图像,如下所示:
Icon bug1 = new ImageIcon( getClass().getResource( "bug1.gif" ) );
Run Code Online (Sandbox Code Playgroud)
为了使上述工作正常,您需要将图像与 .class 文件放在同一文件夹中。有人可以向我解释一下为什么他使用这个特定的代码(据我所知,它一定是反射代码,但话又说回来,我对此不是特别确定)以及是否有一种方法可以让我做到这一点同样的事情,而不会让事情像他那样复杂?
我试图让JLabel图标出现在标签文本上方。
目前我有以下代码;
URL loc = null;
ImageIcon img = null;
JLabel label = null;
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
loc = Test.class.getResource("/Images/imageName.jpg");
img = new ImageIcon(loc);
label = new JLabel("someText", img, JLabel.CENTER);
label.setIconTextGap(0);
label.setVerticalTextPosition(JLabel.BOTTOM);
label.setHorizontalTextPosition(JLabel.RIGHT);
frame.getContentPane().add(label);
Run Code Online (Sandbox Code Playgroud)
我当前看到的输出是图像图标右侧的标签文本。谁能建议改变什么?
我正在尝试访问我的Java代码中的一些图像.调用图像的代码如下.
public final ImageIcon whitePiece = new ImageIcon(getClass().getResource("Images/whitecircle.PNG"));
public final ImageIcon blackPiece = new ImageIcon(getClass().getResource("Images/blackcircle.png"));
public final ImageIcon tiePiece = new ImageIcon(getClass().getResource("Images/tiecircle.PNG"));
public final ImageIcon boardPic = new ImageIcon(getClass().getResource("Images/gameboard.PNG"));
Run Code Online (Sandbox Code Playgroud)
但是,这会返回以下错误:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at jared.othello.GameInterface.<init>(GameInterface.java:26)
at jared.othello.Main.main(Main.java:22)
Run Code Online (Sandbox Code Playgroud)
第26行是上述代码的第一行.我几乎肯定我的文件目录命名有问题,但我无法弄清楚什么是错的或如何解决它.我在项目中创建了一个名为"Images"的源文件,并将图像放在文件夹中,如下所示:

我做错了什么,以及正确的文件名语法是什么?谢谢!
public Image images[] = new Image[20];
for(i=0; i<10; i++){
images[i]=new Image(getClass().getResource("/images/"+i+".jpg"));
}
Run Code Online (Sandbox Code Playgroud)
我试图将图像添加到数组,但它给出错误无法实例化类型图像j
可能是什么原因?
我从我的项目src文件中抓取了imageicon,如下所示:
icon = new ImageIcon(ViewDetailsV.class.getResource("/brandnew/images/male_avatar.jpg"));
Run Code Online (Sandbox Code Playgroud)
然后我想放入这一行,以便调整大小到标签的大小:
lblPhotoField.setIcon(new ImageIcon(ScaledImage(icon, lblPhotoField.getWidth(), lblPhotoField.getHeight()));
Run Code Online (Sandbox Code Playgroud)
但我需要"图标"作为图像,而不是图像图像,因为ScaledImage采用Image参数而不是ImageIcon.
private Image ScaledImage(Image img, int w, int h){
BufferedImage resizedImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = resizedImage.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img, 0,0,w,h,null);
g2.dispose();
return resizedImage;
}
Run Code Online (Sandbox Code Playgroud)
是的,我确实尝试将返回值更改为ImageIcon,但它给了我错误.所以我现在专注于如何将ImageIcon转换为Image,这样我就可以将它放在方法行中,获取图标并将我的标签设置为:
lblPhotoField.setIcon(icon);
Run Code Online (Sandbox Code Playgroud) 我正在尝试为GIF图像制作动画.动画有效,但画面效果不佳.
它显示如下(非动画截图): 
在图像中,尾巴像这样摇晃: 
如您所见,图像不能很好地重现.我不想使用JLabel但是没有正常工作,所以当我的图像没有动画时,我就按照这个问题.
我的代码是这样的:
public void draw(JPanel canvas, Graphics2D g2d, int x, int y) {
getFrontImage().paintIcon(canvas, g2d, x, y);
}
Run Code Online (Sandbox Code Playgroud)
检索和保存图像的位置如下:
ImageIcon gif = new ImageIcon(getClass().getResource(filename));
Run Code Online (Sandbox Code Playgroud)
在JPanel画布中,我制作了一个paint方法和一个每10ms重绘一次的计时器线程.这适用于除GIF之外的所有事情.谁可以帮我这个?
---编辑
我很抱歉误会,我已将图像更新为我实际使用的图像.我希望得到正确答案并不是太麻烦......
我在向我的 java 项目添加图像时确实遇到了问题,在你问之前,是的,我已经搜索并尝试了一切,但我就是无法让它工作。
这是我的问题:
目前我正在使用此代码来获取图像:
ImageIcon goldIcon = new ImageIcon("res/Gold_coin.png");
ImageIcon silverIcon = new ImageIcon("res/Silver_icon.png");
ImageIcon copperIcon = new ImageIcon("res/Copper_icon.png");
Run Code Online (Sandbox Code Playgroud)
我的项目结构如下:
我有一个项目文件夹和两个子文件夹。
两个子文件夹都被指定为源文件夹,一个是“src”文件夹,另一个我命名为“res”。在“src”文件夹中,我有一个包含所有类的包。在“res”文件夹中,我保存了所有图像。
现在奇怪的是,“Gold_icon”确实有效,但银和铜都不起作用。我正在使用 eclipse luna,如果有人能给我一步一步的指导如何添加图像,那就太好了。
因为我找到的总是“添加到资源”,“将其添加到资源文件夹”,老实说,我尝试创建一个新文件夹,将其复制到“src”文件夹,我尝试了所有可能的调用,来自(“res/ Gold_coin.png") 到 ("/Gold_coin.png") 到 ("Gold_coin.png") 和 ("/res/Gold_coin.png")
我刷新了项目、文件夹、包、类,我重新启动了 eclipse 但没有任何帮助
我只是不明白..
请帮忙 :(
如果您需要我之后想对这些图像做什么的信息,我将它们一起添加到带有 flowlayout 的 JPanel 中,我将其写入带有 cellrenderer 的 JTable 单元格,这是与金色图标一起使用的所有内容,但不是其他两个。而且它也无法删除金色图标(因为我认为可能出于某种原因只有第一个图标起作用..),但随后什么也没有显示



我正在尝试将图像大小调整为50*50像素.我从他们存储在数据库中的路径中获取图像.我没有问题获取图像并显示它们.我只是想知道我应该在什么时候尝试调整图像大小.应该是将图像作为缓冲图像,还是只是尝试调整图标大小?
while (rs.next()) {
i = 1;
imagePath = rs.getString("path");
System.out.println(imagePath + "\n");
System.out.println("TESTING - READING IMAGE");
System.out.println(i);
myImages[i] = ImageIO.read(new File(imagePath));
**resize(myImages[i]);**
imglab[i] = new JLabel(new ImageIcon(myImages[i]));
System.out.println(i);
imgPanel[i]= new JPanel();
imgPanel[i].add(imglab[i]);
loadcard.add(imgPanel[i], ""+i);
i++;
Run Code Online (Sandbox Code Playgroud)
上面的代码检索图像并将其分配给ImageIcon,然后分配给JLabel.我试图通过使用下面的调整大小方法来调整缓冲图像的大小.你们能不清楚为什么这对我不起作用?没有任何错误,只是图像保持原始大小.
public static BufferedImage resize(BufferedImage img) {
int w = img.getWidth();
int h = img.getHeight();
int newH = 50;
int newW = 50;
BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType());
Graphics2D g = dimg.createGraphics();
System.out.println("Is this getting here at all " + …Run Code Online (Sandbox Code Playgroud)