首页 > 解决方案 > 将 JButton 作为图像放置在专用位置

问题描述

我正在尝试将具有 Image 表单的 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, 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);
    }
}

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

atB.setLayout(null);

标签: javaimageswinglayout-managernull-layout-manager

解决方案


推荐阅读