java - 如何包装 JFrame 以使其适合我的所有按钮并将事件监听器附加到 Java 中的这些按钮?

标签 java swing button resize jframe

我有以下代码,我在其中为每个字母制作按钮,并且我想听哪个字母被单击。我已经创建了按钮。但我有两个问题,按钮溢出框架,我必须手动调整框架大小才能看到所有按钮。我对 JFrame 使用了 setSize,但它仍然不符合我的预期。

我还想将事件列表附加到每个按钮,因为我制作它们并在单击按钮时获取按钮名称(字母)。

import javax.swing.*;

import java.awt.GridLayout;
import java.awt.event.*;

public class HangmanGUI {


        public static void main(String[] args){

            new HangmanGUI();

        }
        //constructor for Hangman
        /**
         * Instantiates a new hangman gui.
         */
        public HangmanGUI() {

            JFrame myframe= new JFrame();
            JPanel myPanel = new JPanel();

            myframe.setSize(600,400);

            for (char alphabet = 'A';alphabet<='Z';alphabet++){
                myPanel.add(new JButton(alphabet+""));
            }

            myframe.add(myPanel);
            myframe.pack();
            myframe.setTitle("Hangman Game");
            myframe.setVisible(true);
            myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        }

}

这里有任何其他更好的方法或一些不好的风格 - 请指出。非常感谢

最佳答案

the buttons overflow the frame,

JPanel 的默认布局管理器是 FlowLayout,因此按钮会从面板中流出。

而是使用GridLayout,这样您就可以控制每行显示的按钮数量。

I used setSize for JFrame, but it still did not fit the frame as I expected.

pack() 撤消 setSize()。最好使用 pack() 而不是 setSize() 并让布局管理器完成其工作。

关于java - 如何包装 JFrame 以使其适合我的所有按钮并将事件监听器附加到 Java 中的这些按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389894/

相关文章:

java - 如何使 JDialog 不总是在父级之上

asp.net - ASP.NET 按钮周围的虚线边框

java - 此方法调用为非空方法参数传递一个空值。要么参数被注释为应始终为非空的参数

java - 如何减少 Hibernate 类中的重复代码?

java - Mac 上功能透明但 Windows 上不行?

java boxlayout组成

wpf - WPF按钮列表框:如何使用XAML单击更改选定的项目

css - 隐藏默认的 css 按钮

java - 尝试启动 Android Studio 时出现 JDK 错误

java - 从包含特殊字符的 url 下载图像