当前位置: 首页 > 知识库问答 >
问题:

如何在JavaSwing包中创建专栏

桓瀚
2023-03-14

嘿,伙计们,我正在制作这个游戏,我想知道如何在右边制作另一个专栏。你会从视觉上更好地理解:

这就是我现在做的:

但是如果我再加一个按钮,它就会垂直向下。我如何使它水平到中间,这样我就可以使我的井字游戏。

代码:

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();
         }
         });


         }


}

共有2个答案

法弘亮
2023-03-14

这都是关于布局的:您已经指定了BoxLayout,它将控件垂直放置。

用另一个就好了。你可以找到更多关于布局在留档

GridLayout似乎非常适合你的porpouse

濮阳翔
2023-03-14

您需要使用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的网格,并用按钮填充它。

 类似资料:
  • 我想用JavaSwing创建以下GUI。 由于我对Java Swing没有足够的经验,所以我不确定如何准确地重新创建该GUI。 我尝试过使用GridLayout,如下所示: 我已经尝试过其他的布局管理器,但是由于我缺乏经验,我无法得到任何与我想要实现的图形用户界面相类似的东西。 我可能不得不使用GridBagLayout,但我已经尝试过了,根本无法完成任何事情。我不确定如何确切地使用GridBag

  • `公共类LoginSuccess扩展AppCompatActivity{Toolbar Toolbar;TabLayout TabLayout;ViewPager ViewPager;ViewPagerAdapter ViewPagerAdapter; }`

  • 问题内容: 在Python中,命名空间包可让您在多个项目中传播Python代码。当您要将相关的库作为单独的下载发布时,这很有用。例如,目录和中, 最终用户可以和。 定义名称空间包的最佳方法是什么,以便多个Python产品可以在该名称空间中定义模块? 问题答案: TL; DR: 在Python 3.3上,您无需执行任何操作,只需将任何内容都不放在名称空间包目录中即可使用。在3.3之前的版本中,请选择

  • 本文向大家介绍如何在Java 9中的JShell中创建包装对象?,包括了如何在Java 9中的JShell中创建包装对象?的使用技巧和注意事项,需要的朋友参考一下 我们可以使用new运算符来创建Wrapper类的实例,还可以在Integer等类型中使用valueOf()方法来创建包装器对象。 Integer.valueOf()方法将重用现有Integer对象与在堆上相同的值。如果堆中存在具有相同值

  • 读取专题信息 调用地址 http://api.bilibili.cn/sp 参数 字段 必选 类型 说明 spid false int 专题编号 title false string 专题名称 返回 返回值字段 字段类型 字段说明 spid int 专题SPID title string 专题名 pubdate int 发布日期 (UNIX Timestamp) create_at date 发布

  • 我正在尝试创建一个JavaFX应用程序,但是我找不到一种方法将JavaFX jar文件捆绑在Launch4J创建的EXE文件中。有办法做到这一点吗? 到目前为止,我所拥有的是一个EXE和OpenJFX14和OpenJDK14的发行版,它们位于同一个文件夹中,并具有OpenJFX文档所规定的JRE路径和VM选项。 我使用OpenJDK14.0.1和Open JavaFX14.0.2。