Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以';t x按钮的设置边界_Java_Swing_Graphics_Jframe_Jbutton - Fatal编程技术网

Java 我可以';t x按钮的设置边界

Java 我可以';t x按钮的设置边界,java,swing,graphics,jframe,jbutton,Java,Swing,Graphics,Jframe,Jbutton,在我的Tic Tac Toe游戏中,我已经画好了线,现在我正试着按上按钮。我尝试输入的第一个按钮,我尝试设置的边界,但它没有设置边界。它只是填满了整个屏幕。如何使按钮仅位于右上方的方框中 public class Project extends JFrame{ static JButton button = new JButton(""); static JButton button2 = new JButton(""); static JButton button3 = new JButto

在我的Tic Tac Toe游戏中,我已经画好了线,现在我正试着按上按钮。我尝试输入的第一个按钮,我尝试设置的边界,但它没有设置边界。它只是填满了整个屏幕。如何使
按钮
仅位于右上方的方框中

public class Project extends JFrame{

static JButton button = new JButton("");
static JButton button2 = new JButton("");
static JButton button3 = new JButton("");
static JButton button4 = new JButton("");
static JButton button5 = new JButton("");
static JButton button6 = new JButton("");
static JButton button7 = new JButton("");
static JButton button8 = new JButton("");
static JButton button9 = new JButton("");


    public Project(){
        setSize(1000, 750);
    }

    public void paint(Graphics g){
        super.paint(g);
        Graphics2D g2 = (Graphics2D) g;
        Line2D line = new Line2D.Float(100, 100, 100, 400);
        Line2D line2 = new Line2D.Float(200, 100, 200, 400);
        Line2D line3 = new Line2D.Float(0, 200, 300, 200);
        Line2D line4 = new Line2D.Float(0, 300, 300, 300);
        g2.draw(line);
        g2.draw(line2);
        g2.draw(line3);
        g2.draw(line4);
    }

    public static void main(String[] args){
        Project t = new Project();
        t.setVisible(true);
        button.setBounds(0, 0, 50, 50);
        t.add(button);
    }
}

您的项目类扩展了JFrame,默认情况下,JFrame contentPane(接受新组件的JFrame容器)使用BorderLayout。当您使用容器将组件添加到BorderLayout中而不指定组件的位置时,默认情况下会将其添加到BorderLayout.CENTER位置,从而有效地填充GUI。有几种方法可以解决您的困境:

  • 使用PM77-1建议的网格布局。这样,一个3x3的网格将把所有9个按钮放在大小相等的单元格中,填满容器
  • 根本不使用按钮和ActionListener,而是使用MouseListenerListener检查按钮按下的位置,确定是否为空单元格,并相应地采取行动

为什么不使用?通过谈论
边界布局
,您提醒我没有使用
null
布局。我应该看到的。谢谢。@cade:在这种情况下,最糟糕的事情就是使用空布局。虽然他们似乎是摇摆新手,喜欢创建复杂GUI的最简单和最好的方法,但你创建的摇摆GUI越多,在使用它们时遇到的困难就越严重。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,它们在滚动窗格中完全失败,在所有不同于原始平台的平台上查看时,它们看起来非常糟糕。。。。你已经有了一个像样的,简单的布局管理器,你可以使用,。。。使用它。