如何通过点击一个按钮在java中改变图像
问题描述:
如果已经显示一个图像,通过点击一个按钮,我该如何改变它到另一个?如何通过点击一个按钮在java中改变图像
说我有两个图像缓冲。
bi = ImageIO.read(new File("1.jpg");
bi2 = ImageIO.read(new File("2.jpg"));
,并显示我使用
public void paint(Graphics g){
super.paintComponent(g);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = ((int) dim.getWidth()/2) - (bi.getWidth()/2);
int h = ((int) dim.getHeight()/2) - (bi.getHeight()/2);
g.drawImage(bi, w, h, null);
}
我试图做这双。
JButton b = new JButton("Change Image");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
bi = bi2;
paint(null);
}
});
这个集合bi是一个新的图像和paint()方法,但图像查看器本身并没有现在出现。
的how to set JFrame background transparent but JPanel or JLabel Background opaque?
答
延续您需要申请repaint
。
JButton b = new JButton("Change Image");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
bi = bi2;
//invalidate();
repaint();
}
});
可能还需要调用invalidate
第一,以允许标记为被重绘经理
如果您了解该地区被涂(即老区和新区重绘容器),你可以调用paintImmediately
代替
所以这样的事情也工作...
int w = ((int) dim.getWidth()/2) - (bi.getWidth()/2);
int h = ((int) dim.getHeight()/2) - (bi.getHeight()/2);
Rectangle oldArea = new Rectangle(w, h, bi.getWidth(), bi.getHeight());
bi = bi2;
w = ((int) dim.getWidth()/2) - (bi.getWidth()/2);
h = ((int) dim.getHeight()/2) - (bi.getHeight()/2);
Rectangle newArea = new Rectangle(w, h, bi.getWidth(), bi.getHeight());
Area area = new Area();
area.add(oldArea);
area.add(newArea);
Rectangle updateArea = area.getBounds();
paintImmediately(updateArea);
+0
@sabbibJAVA不使用CardLayout – mKorbel
你为什么不只是使用'setImageIcon(ImageIcon的)'按钮的方法? –
最简单的方法是将它们用作未修饰按钮上的备用图标,如[本答案](http://*.com/a/7360696/418556)所示。 –
@HarryJoy给我8秒。 ;) –