使用 JButton 更改 ImageBackground?
Changing ImageBackground with a JButton?
我希望能够用一个简单的 Jbutton 来改变背景。背景和我将添加的所有其他组件都将在 JPanel 上移动。我已经想出了如何使用 Java.awt 设置背景,尽管我不知道如何在不出错的情况下重新绘制背景。
public class StartPanel extends JPanel{
private Image virus = "ImagePath";
private Image ecoli = "ImagePath";
private Graphics g;
private boolean img;
public StartPanel(){
this.setLayout(null);
this.add(Button());
img = true;
}
private JButton Button(){
JButton b = new JButton("a");
b.setBounds(230,480,20,20);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
img = !img;
repaint();
}
});
return b;
}
public void paint(Graphics g){
If(img){
g.drawImage(ecoli,0,0,this);
} else {
g.drawImage(virus,0,0,this);
}
}
}
您不能只使用字符串初始化图像,它们需要以其他方式进行初始化。我相信最简单的方法是使用 ImageIcon,如下所示:
Image ecoli = new ImageIcon("ImagePath").getImage();
如果您对 awt-Image 没问题...
对于更改任务,只需使用布尔值 你在 actionlistener 中
public class StartPanel extends JPanel{
private BufferedImage virus;
private BufferedImage ecoli;
boolean pic1;
public StartPanel(){
try{
virus = ImageIO.read(new File("PathtoImage"));
ecoli = ImageIO.read(new File("PathtoImage"));
}
catch (IOException ex){
System.out.println("Error ;-)");
}
this.setLayout(null);
this.add(Button());
pic1 = true;
}
private JButton Button(){
JButton b = new JButton("a");
b.setBounds(230,480,20,20);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
pic1 = !pic1;
repaint();
}
});
return b;
}
protected void paintComponent(Graphics g){
if(pic1)
g.drawImage(ecoli,0,0,this);
else
g.drawImage(virus,0,0,this);
}
}
如果您有两个以上的图像,请结合使用 int 和 s case
我希望能够用一个简单的 Jbutton 来改变背景。背景和我将添加的所有其他组件都将在 JPanel 上移动。我已经想出了如何使用 Java.awt 设置背景,尽管我不知道如何在不出错的情况下重新绘制背景。
public class StartPanel extends JPanel{
private Image virus = "ImagePath";
private Image ecoli = "ImagePath";
private Graphics g;
private boolean img;
public StartPanel(){
this.setLayout(null);
this.add(Button());
img = true;
}
private JButton Button(){
JButton b = new JButton("a");
b.setBounds(230,480,20,20);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
img = !img;
repaint();
}
});
return b;
}
public void paint(Graphics g){
If(img){
g.drawImage(ecoli,0,0,this);
} else {
g.drawImage(virus,0,0,this);
}
}
}
您不能只使用字符串初始化图像,它们需要以其他方式进行初始化。我相信最简单的方法是使用 ImageIcon,如下所示:
Image ecoli = new ImageIcon("ImagePath").getImage();
如果您对 awt-Image 没问题...
对于更改任务,只需使用布尔值 你在 actionlistener 中
public class StartPanel extends JPanel{
private BufferedImage virus;
private BufferedImage ecoli;
boolean pic1;
public StartPanel(){
try{
virus = ImageIO.read(new File("PathtoImage"));
ecoli = ImageIO.read(new File("PathtoImage"));
}
catch (IOException ex){
System.out.println("Error ;-)");
}
this.setLayout(null);
this.add(Button());
pic1 = true;
}
private JButton Button(){
JButton b = new JButton("a");
b.setBounds(230,480,20,20);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
pic1 = !pic1;
repaint();
}
});
return b;
}
protected void paintComponent(Graphics g){
if(pic1)
g.drawImage(ecoli,0,0,this);
else
g.drawImage(virus,0,0,this);
}
}
如果您有两个以上的图像,请结合使用 int 和 s case