刽子手的照片是半身

Nig*_*mer 2 java swing image layout-manager

public Hangman(){

    Container content =getContentPane();
    content.setLayout(new GridLayout(0,1));

   btnAddWord.addActionListener(this);
   btnRestart.addActionListener(this);
   btnHelp.addActionListener(this);
   btnExit.addActionListener(this);

   panel2.add(label);
   panel3.add(word);
   panel4.add(btnAddWord);
   panel4.add(btnRestart);
   panel4.add(btnHelp);
   panel4.add(btnExit);
Run Code Online (Sandbox Code Playgroud)
public static void main (String [] args){
    Hangman frame = new Hangman();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 600);
    frame.add(panel1, BorderLayout.NORTH);
    frame.add(panel2, BorderLayout.CENTER);
    frame.add(panel3, BorderLayout.SOUTH);
    frame.add(panel4, BorderLayout.SOUTH);
}
Run Code Online (Sandbox Code Playgroud)

好的,所以当我点击错误的按钮时,我会弄清楚如何改变图片,但问题是图片是半边的,所以我的布局有问题......

在此输入图像描述

Mad*_*mer 6

好的,所以我很快就把它擦掉了.

public class HangPane extends JPanel {

    private JLabel lblImage;
    private JButton btnAction;
    private int guess = 0;

    public HangPane() {

        setLayout(new BorderLayout());
        lblImage = new JLabel();
        lblImage.setPreferredSize(new Dimension(46, 172));
        lblImage.setHorizontalAlignment(JLabel.CENTER);
        lblImage.setVerticalAlignment(JLabel.CENTER);
        btnAction = new JButton("Guess");

        String imageName = "HG0.png";
        lblImage.setIcon(new ImageIcon(imageName));


        btnAction.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {

                String imageName = "HG0.png";

                guess++;
                switch (guess) {
                    case 1:
                        imageName = "HG1.png";
                        break;
                    case 2:
                        imageName = "HG2.png";
                        break;
                    case 3:
                        imageName = "HG3.png";
                        break;
                    case 4:
                        imageName = "HG4.png";
                        break;
                    case 5:
                        imageName = "HG5.png";
                        break;
                    case 6:
                        imageName = "HG6.png";
                        break;
                    default:
                        guess = 0;
                        break;
                }

                lblImage.setIcon(new ImageIcon(imageName));

            }
        });

        add(lblImage, BorderLayout.CENTER);
        add(btnAction, BorderLayout.SOUTH);

    }
}
Run Code Online (Sandbox Code Playgroud)

Guess00Guess01Guess02Guess03Guess04Guess05Guess06

这只是让您单击并单独查看每个步骤.

一些想法.

您可能需要设置标签的首选大小(虽然说实话,我认为将标签放在CENTER适当的位置会照顾到这一点).

我使用的尺寸只适合我自己的图像,你需要弄清楚自己的图像.

另外,尝试使用类似的东西设置组件的边框LineBorder.这将告诉您它是布局问题还是图像/读取问题.