Place a JButton as Image at dedicated location

30 Views Asked by At

I am trying to place my JButton which has Image form to a desired place on my JFrame but when I define method setBounds for this particular button it is not working as expected and button is still on the same place. Code below:

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, 0, 0, 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);
    }
}

As you can see above I am trying setBounds but unsuccessfully. I was trying also:

atB.setLayout(null);
0

There are 0 best solutions below