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

GridBagLayout未按预期工作

穆子琪
2023-03-14
public class rect  
{
 JFrame frame ; 
 JPanel panel1 ; 
 JButton b1;
 GridBagConstraints gbc; 

 public  rect()
{
    panel1 = new JPanel();  
    panel1.setSize(300,300);
    panel1.setLayout(new GridBagLayout());
    gbc = new GridBagConstraints();

    frame= new JFrame("Address ?ooK "); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 300);


    b1= new JButton () ;
    b1.setText("Hello ");
    gbc.gridx=1; 
    gbc.gridy=0; 

    panel1.add(b1, gbc) ; 

    frame.add(panel1);
    panel1.setVisible(true);
    frame.setVisible(true);

}

共有1个答案

甄阳朔
2023-03-14

设置时

gbc.gridx = 1;
gbc.gridy = 0;

对于GridBagConstraints,您不会像使用绝对定位那样设置绝对坐标。相反,您正在设置组件将驻留的网格单元格。在上面的示例应用程序中,只有一个组件,因此只有一个网格单元格,因此JButton默认情况下位于中心位置。

为了突出显示这一事实,我们可以添加将锚点设置为north并添加另一个按钮,创建两个网格单元格:

gbc.anchor = GridBagConstraints.NORTH;
gbc.weightx = 1.0;
gbc.weighty = 1.0;

gbc.gridx = 1;
gbc.gridy = 0;

panel1.add(new JButton("Hello"), gbc);

gbc.gridx = 2; // now a 2nd cell exists
panel1.add(new JButton("Test"), gbc);
 类似资料:
  • 问题内容: 我正在编写一个使用许多不同组件的程序,因此我开始对其使用GridBagLayout。效果很好,但是当我运行程序时,我得到了: 当前布局图 应该将最右边的列表对象直接与其余对象对齐,并填充屏幕的整个宽度。不知道为什么不是。这是相关代码的简短副本(为简化起见,我决定将它们全部放在一个类中): 我包括了所有的NoteBox类,因为它是发生故障的类,并且我认为它是最相关的。 问题答案: 正如M

  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里

  • 我正在使用Grails 2.0.1中的springsecurity插件。我的角色层次结构和其他s2属性如下所示。