Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JFrame中单击JButton时更改现有图像?(爪哇)_Java_Image_Swing_Jframe - Fatal编程技术网

Java 如何在JFrame中单击JButton时更改现有图像?(爪哇)

Java 如何在JFrame中单击JButton时更改现有图像?(爪哇),java,image,swing,jframe,Java,Image,Swing,Jframe,所以我在做一个游戏,当我点击一个按钮时,我想改变屏幕上已经出现的图像,但是我尝试的都没有效果,所以我来这里寻求帮助 这是我的代码: package frametest; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class FrameTest extends JFrame implemen

所以我在做一个游戏,当我点击一个按钮时,我想改变屏幕上已经出现的图像,但是我尝试的都没有效果,所以我来这里寻求帮助

这是我的代码:

package frametest;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class FrameTest extends JFrame implements ActionListener {

    JPanel totalGUI, player1, buttons;
    JLabel p1a, p1b;
    JButton change1, change2;
    ImageIcon C2 = new ImageIcon("Pictures\\cards\\C2.png");
    ImageIcon SK = new ImageIcon("Pictures\\cards\\SK.png");    
    ImageIcon HJ = new ImageIcon("Pictures\\cards\\HJ.png");

    public JPanel createContentPane(){  
        JPanel totalGUI = new JPanel();
        totalGUI.setBackground(new Color( 52, 186, 119 ));
        totalGUI.setLayout(null);

        //Speler 1
        JPanel player1 = new JPanel();
        player1.setLocation(240,431);
        player1.setSize(190,110);
        player1.setBackground(new Color( 52, 186, 119 ));
        totalGUI.add(player1);

        JLabel p1a = new JLabel();
        p1a.setIcon(C2);
        p1a.setLocation(0,0);
        player1.add(p1a);
        pack();

        JLabel p1b = new JLabel();
        p1b.setIcon(SK);
        p1b.setLocation(0,20);
        player1.add(p1b);
        pack();

        //Knoppen
        JPanel buttons = new JPanel();
        buttons.setLayout(null);
        buttons.setLocation(700,435);
        buttons.setSize(200,90);
        totalGUI.add(buttons);

        JButton change1 = new JButton("Jack of Hearts");
        change1.setLocation(0,0);
        change1.setSize(200,30);
        change1.addActionListener(this);
        buttons.add(change1);      

        JButton change2 = new JButton("King of Spades");
        change2.setLocation(0,30);
        change2.setSize(200,30);
        change2.addActionListener(this);
        buttons.add(change2);

        totalGUI.setOpaque(true);
        return totalGUI;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == change1) {
            p1a.setIcon(HJ);
        } else if(e.getSource() == change2 ) {
            p1a.setIcon(SK);
        } 
    }

    private static void createAndShowGUI() {
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Poker Game");

        FrameTest demo = new FrameTest();
        frame.setContentPane(demo.createContentPane());

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        frame.setSize(1000,600);     
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() { 
                createAndShowGUI();
            }
        });
    }}

似乎我必须在这篇文章中写更多的内容才能发布它,但我不知道该写什么…

问题是您在方法
createContentPane()
中重新声明了变量

应该是

public JPanel createContentPane(){  
        totalGUI = new JPanel();
        /**/
}

您必须对
createContentPane()
方法中的
player1、按钮、p1a、p1b、change1、change2执行相同的操作。

问题是您在方法
createContentPane()
中重新声明了变量

应该是

public JPanel createContentPane(){  
        totalGUI = new JPanel();
        /**/
}

您必须对
createContentPane()
方法中的
player1、按钮、p1a、p1b、change1、change2
执行相同的操作。

噢,我的上帝,非常感谢!我在这个问题上纠缠了好几天,答案很简单。谢谢哦,我的上帝,非常感谢!我在这个问题上纠缠了好几天,答案很简单。谢谢