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

添加多个JButton移动其他JButton(Java)

养焱
2023-03-14

一段时间以来,我一直面临的问题是,每当我向JPanel添加JButton时,我使用的任何其他JButton都会朝着这个方向移动。

以下是第一个代码:

//imports
import java.awt.*;
import javax.swing.*;

public class Example {
  public static void main(String[] args) {
    // Create the frame and panel and the Grid Bag Constraints
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    // Create ONE JButton
    JButton button1 = new JButton("Button1");
    // Set the frame's properties
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600, 600);
    frame.getContentPane().add(panel, BorderLayout.NORTH);
    frame.setVisible(true);
    // Set Basic Grid Bag Constraints settings.
    c.gridx = 0;
    c.gridy = 0;
    // Set the Insets
    c.insets = new Insets(0, 0, 0, 0);
    // Add the Grid Bag Constraints and button1 the panel
    panel.add(button1, c);
  }
}

一切似乎都正常吗?如果我们添加第二个按钮:

//imports
import java.awt.*;
import javax.swing.*;

public class Example {
  public static void main(String[] args) {
    // Create the frame and panel and the Grid Bag Constraints
    JFrame frame = new JFrame();
    JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    // Create TWO JButtons
    JButton button1 = new JButton("Button1");
    JButton button2 = new JButton("Button2");
    // Set the frame's properties
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(600, 600);
    frame.getContentPane().add(panel, BorderLayout.NORTH);
    frame.setVisible(true);
    // Set Basic Grid Bag Constraints settings.
    c.gridx = 0;
    c.gridy = 0;
    // Set the Insets
    c.insets = new Insets(0, 0, 0, 0);
    // Add the Grid Bag Constraints and button1 the panel
    panel.add(button1, c);
    // Set the Insets
    c.insets = new Insets(500, 0, 0, 0);
    // Add the Grid Bag Constraints and button2 the panel
    panel.add(button2, c);
  }
}

然后按钮1向下移动到按钮2。有人知道为什么和/或修复它吗?

编辑:我想问的是,如何在不移动其他按钮的情况下添加另一个按钮。

共有1个答案

陈阳舒
2023-03-14

我不知道你的意图是什么。你只是说它没有达到你的期望。所以我不能给你一个确切的解决方案。

在任何情况下,首先阅读Swing教程中关于如何使用GridBagLayout进行工作示例的部分。

我看到两个问题:

>

  • 您永远不会更改gridx/y值。这两个组件都被添加到网格(0,0),这不是GridBagLayout应该如何工作。每个组件都需要添加到不同的单元格中。

    插入(500,…)的值看起来很大。

  •  类似资料:
    • 问题内容: 需要一个简单的Swing代码来演示如何使用tablecellrenderer和tablecelleditor在Jtable的列中添加按钮。 问题答案: 将按钮添加到 Sample ,这是管理列和行,设置组件 Sample ,它管理在组件上单击鼠标的时间 示例JTable单元格渲染器,管理单元格组件

    • 我正在尝试用java制作一个小游戏来完成任务。 我们需要在JFrame窗口中有一个可调整大小的网格,其中包含nxn(n=一些合理的数字,如5或7)字段(在这种情况下,每个字段都是一个按钮),在该字段上有以下规则: 中间的按钮是一个“黑洞”,有两个玩家。每个玩家有N-1艘飞船供他们使用,他们必须将它们移入黑洞。第一个做到这一点的玩家获胜。两个玩家的飞船都是对角排列的,朝向和远离中间(黑洞)。 诀窍是

    • 问题内容: 在NetBeans中,我已经使用GUI编辑器制作了一个JFrame,并且在框架中放置了一个JPanel。目前,我正在尝试在类构造时在面板中创建一个新按钮。这是我的代码,但似乎无法正常工作。(第一行显示该按钮,其他行尝试显示该按钮。) 我整夜都在搜寻Google,但似乎无法正常运作。 问题答案: 有时候,您看不到按钮是布局管理器问题(因为您没有为布局管理器设置正确的属性)。您可以通过禁用

    • 我正在编写一个Java应用程序。我有多个按钮。每个按钮的代码完全相同,因此我只需要一个ActionListener。但是在这个ActionListener中,我需要为相应的按钮调用“setText()”。这可能吗?我将如何实现这一点? 我尝试了以下方法: 但这不起作用——它说“找不到符号”。 提前感谢;)

    • 介绍 (Introduction) JButton类是一个按钮的实现。 此组件具有标签,并在按下时生成事件。 它也可以有一个图像。 Class 声明 (Class Declaration) 以下是javax.swing.JButton类的声明 - public class JButton extends AbstractButton implements Accessible

    • 我有这个actionlistener添加到一个按钮: 这是jPanel和jbutton的代码: 我怎样才能让它删除jframe的所有组件,除了名为buttonPanel的jpanel?