java - 你如何在java swing包中制作一个专栏

标签 java swing jbutton

大家好,我正在制作这款井字棋游戏,想知道如何在右侧创建另一列。你会在视觉上更好地理解:

这是我现在做的:

enter image description here

但如果我添加另一个按钮,它就会垂直向下。我该怎么做才能让它水平地移动到中间,这样我就可以制作我的井字游戏了。

代码:

import java.awt.Dimension;
import java.awt.Insets;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import sun.org.mozilla.javascript.internal.xml.XMLLib.Factory;



public class TicTacToe {
    JFrame frame;
    JPanel contentPane;
    JButton row1col1;
    JButton row1col2;
    JButton row1col3;
    JButton row2col1;
    JButton row2col2;
    JButton row2col3;
    JButton row3col1;
    JButton row3col2;
    JButton row3col3;   


    public TicTacToe() {
        // TODO Auto-generated constructor stub

        frame = new JFrame("Fds");
        contentPane = new JPanel();
        contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.Y_AXIS));
        contentPane.setBorder(BorderFactory.createEmptyBorder
                 (10, 10, 10, 10));

        row1col1 = new JButton();
        row1col1.setMargin( new Insets(10, 10, 10, 10) );
        contentPane.add(row1col1);

        row1col2 = new JButton();
        row1col2.setMargin( new Insets(10, 10, 10, 10) );
        contentPane.add(row1col2);

        row1col3 = new JButton();
        row1col3.setMargin( new Insets(10, 10, 10, 10) );
        contentPane.add(row1col3);


        row2col1 = new JButton();
        row2col1.setMargin( new Insets(10, 10, 10, 10) );
        contentPane.add(row2col1);

        row2col2 = new JButton();
        row2col2.setMargin( new Insets(10, 10, 10, 10) );
        contentPane.add(row2col2);

        row2col3 = new JButton();
        row2col3.setMargin( new Insets(10, 10, 10, 10) );
        contentPane.add(row2col3);



        frame.setContentPane(contentPane);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);


    }


    private static void runGUI() {
         JFrame.setDefaultLookAndFeelDecorated(true);
         TicTacToe greeting = new TicTacToe();
         }
         public static void main(String[] args) {
         /* Methods that create and show a GUI should be
         run from an event-dispatching thread */
         javax.swing.SwingUtilities.invokeLater(new Runnable() {
         public void run() {
         runGUI();
         }
         });


         }


}

最佳答案

您将需要使用 GridLayout而不是 BoxLayout

然后,网格布局管理器将负责将您的按钮放置在时尚的网格中。

类似这样(未经测试):

JButton[] grid = new JButton[9];
this.setLayout(new GridLayout(3,3,1,1));
for(int i = 0; i < 9; i++) {
    JButton button = new JButton();
    ...//Attach event handlers, etc.
    this.add(button);
    grid.add(button);
}

上面的代码应该创建一个 3 x 3 的网格并用按钮填充它。

关于java - 你如何在java swing包中制作一个专栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34494747/

相关文章:

Java 在循环中迭代字符串数组并一次返回

java - jbuttons 仅在我将鼠标悬停在它们上方后显示

java - 如何在我的小程序中进行倒计时?

java - isArmed、isPressed 和 isSelected 之间的区别

java - 为独立应用程序绑定(bind)一个 java swing gui 和 c++ 后端,它们形成两个不同的项目

java - 从路由中删除方法只能通过 Postman 进行,不能通过浏览器进行

java - 根据几个参数对类(class)内容进行排序

java - JLayeredPane 不更新 JLabel 的移动

java - 如何从jtable中删除一行

Java - JLabel 组件仅在调整大小时显示