• 关于 GridBagLayout 的布局问题


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 Fargoahao 2024-06-29 17:54 采纳率: 0% 浏览 5 首页/ 编程语言 / 关于 GridBagLayout 的布局问题 javaintellij-ideaui 在我使用 JFormDesigner 设计 Java Swing 窗口时发现该 GridBagLayout 布局在我测试时和界面呈现的不一样明明中间已经空了很多的格子但最后还是挤到了一起以下是Jformdesigner自动生成的窗口代码 import java.awt.*; import javax.swing.*; /* * Created by JFormDesigner on Fri Jun 21 17:18:19 CST 2024 */ /** * @author 33941 */ public class TempWindow_Register extends JPanel { public TempWindow_Register() { initComponents(); } private void initComponents() { // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents @formatter:off GridBag = new JFrame(); tabbedPane3 = new JTabbedPane(); AccountRegister = new JPanel(); label7 = new JLabel(); textField5 = new JTextField(); label8 = new JLabel(); textField6 = new JTextField(); button4 = new JButton(); button5 = new JButton(); panel4 = new JPanel(); panel3 = new JPanel(); label3 = new JLabel(); textField3 = new JTextField(); label4 = new JLabel(); textField4 = new JTextField(); button2 = new JButton(); button3 = new JButton(); //======== GridBag ======== { GridBag.setVisible(true); GridBag.setTitle("GridBag"); Container GridBagContentPane = GridBag.getContentPane(); GridBagContentPane.setLayout(new GridLayout()); //======== tabbedPane3 ======== { //======== AccountRegister ======== { AccountRegister.setLayout(new GridBagLayout()); //---- label7 ---- label7.setText("Account\uff1a"); AccountRegister.add(label7, new GridBagConstraints(3, 3, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, new Insets(0, 0, 5, 5), 0, 0)); AccountRegister.add(textField5, new GridBagConstraints(4, 3, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- label8 ---- label8.setText("Password\uff1a"); AccountRegister.add(label8, new GridBagConstraints(3, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, new Insets(0, 0, 5, 5), 0, 0)); AccountRegister.add(textField6, new GridBagConstraints(4, 4, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- button4 ---- button4.setText("text"); AccountRegister.add(button4, new GridBagConstraints(3, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); //---- button5 ---- button5.setText("text"); AccountRegister.add(button5, new GridBagConstraints(6, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0)); } tabbedPane3.addTab("\u8d26\u53f7\u6ce8\u518c", null, AccountRegister, "\u5728\u8fd9\u91cc\u8fdb\u884c\u8d26\u53f7\u6ce8\u518c"); //======== panel4 ======== { panel4.setLayout(new GridLayout(3, 3)); } tabbedPane3.addTab("\u8d26\u53f7\u767b\u5f55", panel4); //======== panel3 ======== { //---- label3 ---- label3.setText("text"); //---- label4 ---- label4.setText("text"); //---- button2 ---- button2.setText("text"); //---- button3 ---- button3.setText("text"); GroupLayout panel3Layout = new GroupLayout(panel3); panel3.setLayout(panel3Layout); panel3Layout.setHorizontalGroup( panel3Layout.createParallelGroup() .addGroup(panel3Layout.createSequentialGroup() .addGap(115, 115, 115) .addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.TRAILING, false) .addGroup(panel3Layout.createSequentialGroup() .addComponent(button2) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 25, Short.MAX_VALUE) .addComponent(button3)) .addGroup(panel3Layout.createSequentialGroup() .addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.TRAILING, false) .addComponent(label3, GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE) .addComponent(label4, GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE)) .addGap(33, 33, 33) .addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.TRAILING) .addComponent(textField3, GroupLayout.PREFERRED_SIZE, 101, GroupLayout.PREFERRED_SIZE) .addComponent(textField4, GroupLayout.PREFERRED_SIZE, 101, GroupLayout.PREFERRED_SIZE)))) .addGap(0, 177, Short.MAX_VALUE)) ); panel3Layout.setVerticalGroup( panel3Layout.createParallelGroup() .addGroup(panel3Layout.createSequentialGroup() .addGap(68, 68, 68) .addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(textField3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(label3, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(textField4, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) .addComponent(label4)) .addGap(35, 35, 35) .addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(button3) .addComponent(button2)) .addContainerGap(43, Short.MAX_VALUE)) ); } tabbedPane3.addTab("text", panel3); } GridBagContentPane.add(tabbedPane3); GridBag.setSize(475, 325); GridBag.setLocationRelativeTo(null); } // JFormDesigner - End of component initialization //GEN-END:initComponents @formatter:on } // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables @formatter:off private JFrame GridBag; private JTabbedPane tabbedPane3; private JPanel AccountRegister; private JLabel label7; private JTextField textField5; private JLabel label8; private JTextField textField6; private JButton button4; private JButton button5; private JPanel panel4; private JPanel panel3; private JLabel label3; private JTextField textField3; private JLabel label4; private JTextField textField4; private JButton button2; private JButton button3; // JFormDesigner - End of variables declaration //GEN-END:variables @formatter:on public void Speak(){ System.out.println("I'm a pig"); } } 展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    1条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-29 17:54
      关注

      引自免费微信小程序:皆我百晓生

      在您提供的代码中,GridBagLayout 是用于设置组件位置的一种布局管理器。它将组件按照指定的位置、大小和方向进行放置。

      然而,在 TempWindow_Register 中,GridBag 实际上是一个 JPanel 类型的对象,而不是一个 GridBagLayout 对象。这意味着 GridBag 不会自动根据您的要求调整其内部组件的位置。

      要解决这个问题,您可以尝试以下方法之一:

      1. 使用 GridBagLayout 来调整组件的位置。
      2. GridBag 设置为 null 或将其转换为其他类型的布局管理器(例如 FlowLayout, BorderLayout 等)。

      如果您想要查看如何使用 GridBagLayout 设置组件的位置,可以参考以下示例代码:

      // 在窗体类中添加一个 GridBagLayout
      GridBagConstraints gridBagConstraints;
      
      // 创建一个新的 GridBagLayout
      GridBagLayout gridBagLayout = new GridBagLayout();
      
      // 添加组件到网格布局
      gridBagLayout.putConstraint(GridBagConstraints.RELATIVE, textField5, GridBagConstraints.RELATIVE, 0, 0, 1, 1, 0, GridBagConstraints.NONE, null, new Insets(0, 0, 0, 0));
      gridBagLayout.putConstraint(GridBagConstraints.RELATIVE, textField6, GridBagConstraints.RELATIVE, 0, 1, 1, 1, 0, GridBagConstraints.NONE, null, new Insets(0, 0, 0, 0));
      gridBagLayout.putConstraint(GridBagConstraints.RELATIVE, button4, GridBagConstraints.RELATIVE, 0, 2, 1, 1, 0, GridBagConstraints.NONE, null, new Insets(0, 0, 0, 0));
      gridBagLayout.putConstraint(GridBagConstraints.RELATIVE, button5, GridBagConstraints.RELATIVE, 0, 3, 1, 1, 0, GridBagConstraints.NONE, null, new Insets(0, 0, 0, 0));
      
      // 将网格布局应用于面板
      panel4.setLayout(gridBagLayout);
      

      这将使所有组件按照行列排列,并且每个组件将占据其行和列中的最大可用空间。

      如果您的目标是使用不同的布局管理器,例如 FlowLayout 或者 BorderLayout,您可以这样做:

      // 创建一个新的 BorderLayout
      BorderLayout borderLayout = new BorderLayout();
      
      // 添加组件到布局
      borderLayout.setComponent(0, textField5, 1, textField6);
      borderLayout.setComponent(1, button4, button5);
      
      // 将布局应用于面板
      tabbedPane3.setLayout(borderLayout);
      

      这样,所有组件将以水平和垂直方式对齐,而不会影响 GridBagLayout 中的组件位置。

      如果您还有其他疑问或需要进一步的帮助,请随时告诉我。

      展开全部

      评论 编辑记录
      编辑
      预览

      报告相同问题?

    • 相关阅读:
      黑马头条项目经验&BUG
      如何给shopify motion主题的产品系列添加description
      行业标杆 | 海云安荣获中国信息通信研究院个人信息处理“最小必要”优秀案例
      windows下修改mysql的max_allowed_packet的值
      Kotlin协程:父子协程的绑定与传递
      传输线感性耦合和距离的关系
      ctfshow-web2(SQL注入)
      教你一招,测试人员如何通过AI提高工作效率!
      操作系统学习案例20240222-liunx自定义systemctl系统服务
      几篇关于对比学习处理遥感图像的文章小结
    • 原文地址:https://ask.csdn.net/questions/8125365