0

マウスをその場所に置いた後まで、ボタンがパネルに表示されないのはなぜだろうと思っていました。また、ウィンドウのサイズを変更すると、再び消えます。MainMenuScreenは、背景画像として使用する単なる画像です。

    //MainMenu setup
    JPanel card2 = new JPanel();
    card2.setLayout(new GridBagLayout());       
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.insets = new Insets(2,2,2,2);
    gbc.anchor = GridBagConstraints.CENTER;
    MainMenuScreen mms = new MainMenuScreen();
    mms.setLayout(new FlowLayout());
    card2.add(mms);
    card2.add(menuButton1, gbc);

これが背景画像による設定方法です。

public class MainMenuScreen extends JPanel{
    private static final long serialVersionUID = 1L;

    private BufferedImage background;

    public MainMenuScreen() {
        try {
            background = ImageIO.read(new File("M&M Arcade.png"));          
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(800, 600);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (background != null) {
            int x = (getWidth() - background.getWidth());
            int y = (getHeight() - background.getHeight());
            g.drawImage(background, x, y, this);
        }

        Graphics2D g2d = (Graphics2D) g;
        g2d.setPaint(Color.white);
    }
}
4

1 に答える 1

1

コンポーネントとの値に同じ値をJButton使用しているため、は表示されません。つまり、それらは同じ場所に存在します。の値を調整すると、ボタンが表示されます。また、。を使用してコンテナに追加する場合は、オーバーロードされた正しいaddメソッドを一貫して使用することをお勧めします。GridBagConstraintsMainMenuScreenJButton menuButton1gbcGridBagLayout

編集:

JPanelコンテナに背景画像を実装する方法については、数多くの議論がありました。注目すべきものは背景パネルです。

于 2013-03-16T17:25:59.943 に答える