Java 如何更换新的图像图标?
当我按下按钮时,如何将图片从image1更改为新图像?1)尝试使用Java 如何更换新的图像图标?,java,image,swing,imageicon,Java,Image,Swing,Imageicon,当我按下按钮时,如何将图片从image1更改为新图像?1)尝试使用setIcon方法。如果不起作用,2)更换 将整个JLabel对象与新对象(具有新图标)一起标记 如果使用第二种方法,您需要 将MyImage转换为类变量。1)尝试使用setIcon方法。如果不起作用,2)更换 将整个JLabel对象与新对象(具有新图标)一起标记 如果使用第二种方法,您需要 将MyImage转换为类变量。稍微偏离主题 您不应该从文件系统加载图像。当您将路径字符串传递给ImageIcon时,您最终会告诉它在文件
setIcon
方法。如果不起作用,2)更换将整个
JLabel
对象与新对象(具有新图标)一起标记
如果使用第二种方法,您需要将
MyImage
转换为类变量。1)尝试使用setIcon
方法。如果不起作用,2)更换将整个
JLabel
对象与新对象(具有新图标)一起标记
如果使用第二种方法,您需要将
MyImage
转换为类变量。稍微偏离主题
您不应该从文件系统加载图像。当您将路径字符串传递给ImageIcon
时,您最终会告诉它在文件系统中查找图像。虽然这可能在IDE的开发期间起作用,但在部署时,您会发现它不起作用
相反,您应该通过URL将图像作为文件加载。可以使用以下方法获取URL。资源将从类路径中查找,这是应该的。这里有一个例子
String mycon="image1.png";
public LottoGUI(String one, String two,String three) {
Container C= getContentPane();
C.setLayout(new FlowLayout());
JLabel MyImage = new JLabel(new ImageIcon(mycon));
JButton labb = new JButton("OK!");
labb.addActionListener(this);
C.add(MyImage);
C.add(labb)
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==labb){}
}
其中image.png
位于src
中的一个资源包中,它将在构建时复制到类路径中
ImageIcon icon = new ImageIcon(MyClass.class.getResource("/resources/image.png"));
回到话题上 至于你的主要问题,正如@peter.petrov所指出的,你应该使用
.setIcon(icon)
并使MyImage
成为具有全局作用域的类成员,以便可以在其他代码块中访问它。现在它只在构造函数中的本地范围内
ProjectRoot
src
resources
image.png
还要注意Java命名约定。变量应该以小写字母开头,即
MyImage
应该是MyImage
稍微偏离主题
您不应该从文件系统加载图像。当您将路径字符串传递给ImageIcon
时,您最终会告诉它在文件系统中查找图像。虽然这可能在IDE的开发期间起作用,但在部署时,您会发现它不起作用
相反,您应该通过URL将图像作为文件加载。可以使用以下方法获取URL。资源将从类路径中查找,这是应该的。这里有一个例子
String mycon="image1.png";
public LottoGUI(String one, String two,String three) {
Container C= getContentPane();
C.setLayout(new FlowLayout());
JLabel MyImage = new JLabel(new ImageIcon(mycon));
JButton labb = new JButton("OK!");
labb.addActionListener(this);
C.add(MyImage);
C.add(labb)
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==labb){}
}
其中image.png
位于src
中的一个资源包中,它将在构建时复制到类路径中
ImageIcon icon = new ImageIcon(MyClass.class.getResource("/resources/image.png"));
回到话题上 至于你的主要问题,正如@peter.petrov所指出的,你应该使用
.setIcon(icon)
并使MyImage
成为具有全局作用域的类成员,以便可以在其他代码块中访问它。现在它只在构造函数中的本地范围内
ProjectRoot
src
resources
image.png
还要注意Java命名约定。变量应以小写字母开头,即
MyImage
应为MyImage
在JButton click事件中使用此行
String mycon="image1.png";
JLabel MyImage;
public LottoGUI(String one, String two,String three) {
Container C= getContentPane();
C.setLayout(new FlowLayout());
MyImage = new JLabel(new ImageIcon(mycon));
JButton labb = new JButton("OK!");
labb.addActionListener(this);
C.add(MyImage);
C.add(labb)
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==labb){
MyImage.setIcon(newIcon);
}
}
用类路径替换“/images/one.png”
Thnaks..在JButton click事件上使用此行
String mycon="image1.png";
JLabel MyImage;
public LottoGUI(String one, String two,String three) {
Container C= getContentPane();
C.setLayout(new FlowLayout());
MyImage = new JLabel(new ImageIcon(mycon));
JButton labb = new JButton("OK!");
labb.addActionListener(this);
C.add(MyImage);
C.add(labb)
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==labb){
MyImage.setIcon(newIcon);
}
}
用类路径替换“/images/one.png”
Thnaks