将 JButton 作为图像放置在专用位置

问题描述

我正在尝试将具有图像形式的 JButton 放置到我的 JFrame 上所需的位置,但是当我为这个特定按钮定义 setBounds 方法时,它没有按预期工作,按钮仍然在同一个位置。代码如下:

public
    class GameFrame {

    JButton atB = new JButton();
    JButton beB = new JButton();
    JButton bgB = new JButton();
    JButton czB = new JButton();
    JButton deB = new JButton();
    JButton dkB = new JButton();
    JButton esB = new JButton();
    JButton plB = new JButton();
    JButton roB = new JButton();
    JButton ruB = new JButton();

    public GameFrame(){
        generateGameFrame();
    }

    public void generateGameFrame() {

        JPanel gamePanel;
        Countries countries = new Countries();
        JFrame gameFrame = new JFrame("Koronawirus AntiPlague - Game");
        try {
            gameFrame.setIconImage(ImageIO.read(GameFrame.class.getResourceAsstream("/resources/images/Icon.png")));
        } catch (IOException ex) {
            ex.printstacktrace();
        }

        gamePanel = new JPanel() {
            public void paintComponent(Graphics g) {
                Image img = Toolkit.getDefaultToolkit().getimage(
                        MenuFrame.class.getResource("/resources/images/map.png"));
                g.drawImage(img,this.getWidth(),this.getHeight(),this);
            }
        };
        gameFrame.setContentPane(gamePanel);

        gameFrame.setSize(700,700);
        gameFrame.setVisible(true);
        gameFrame.setResizable(false);
        gameFrame.setLocationRelativeto(null);
        gameFrame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

        loadImageAsButtonAndDesign();
        gamePanel.add(atB);


    }

    public void loadImageAsButtonAndDesign()
    {
        try {
            Image img = ImageIO.read(getClass().getResource("/resources/images/at.png"));
            atB.setIcon(new ImageIcon(img));
        } catch (Exception ex) {
            System.out.println(ex);
        }
        atB.setBorderPainted(false);
        atB.setopaque(false);
        atB.setBackground(Color.DARK_GRAY.darker());
        atB.setBounds(100,100,20,15);
    }
}

正如你在上面看到的,我正在尝试 setBounds 但没有成功。我也在尝试:

atB.setLayout(null);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)