【问题标题】:Tic-Tac-Toe I can't setBounds of the x button井字游戏我无法设置 x 按钮的边界
【发布时间】:2015-01-05 00:29:00
【问题描述】:

在我的井字游戏中,我画了线条,现在我正在尝试放入按钮。我试图放入的第一个按钮,我试图设置边界,但它没有设置边界。它只是填满了整个屏幕。如何让button 只出现在右上角?

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

【问题讨论】:

标签: java swing graphics jframe jbutton


【解决方案1】:

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

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

【讨论】:

  • 你通过谈论borderLayout 提醒我,我没有使用null 布局。我应该看到的。谢谢。
  • @cade:在这种情况下你能做的最糟糕的事情就是使用空布局。虽然在 Swing 新手看来,它们似乎是创建复杂 GUI 的最简单和最好的方法,但创建的 Swing GUI 越多,使用它们时遇到的困难就越严重。当 GUI 调整大小时,它们不会调整您的组件大小,它们是增强或维护的皇家女巫,放置在滚动窗格中时它们完全失败,在与原始平台不同的所有平台上查看时它们看起来很糟糕......你'已经有了一个体面且简单的布局管理器,你可以使用,......使用它。
猜你喜欢
  • 2013-07-15
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多