java - JAVA中的GridBagLayout问题

标签 java swing gridbaglayout

我目前是java新手,如果您不介意的话,我正在寻求一些帮助。 在此之前,我对 Google 云端硬盘链接感到抱歉,因为我的受欢迎程度不允许我发布图片。

首先,我知道有关此主题的其他帖子已经存在,但我没有找到正确的答案。

我的目标是使用 GridBagLayout 获得如下所示的内容:https://drive.google.com/file/d/0BxoqzZbxl2ZoVWpqSTB5cjJCdkE/view?usp=sharing

我使用 JLabel 作为文本区域,网格是 JButton 的网格(它是 JButton 的二维表)

private String stateText = new String("STATE TEXT");
private String messageText = new String("MESSAGE TEXT");
BUTTONS = new JButton[3][3];

我创建了主容器布局管理器GridBagConstraints:

JPanel content = new JPanel();
content.setPreferredSize(new Dimension(200,150));
content.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();

然后我初始化了gbc:

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

然后我开始放置 JLabels:

stateField.setText(stateText);
stateField.setPreferredSize(new Dimension(50, 50));
stateField.setBorder(BorderFactory.createLineBorder(Color.cyan));
//la taille en hauteur et en largeur
gbc.gridheight = 1;
gbc.gridwidth = 1;
content.add(stateField, gbc);

messageField.setText(messageText);
messageField.setPreferredSize(new Dimension(50, 100));
messageField.setBorder(BorderFactory.createLineBorder(Color.cyan));
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 2;
//Celle-ci indique que la cellule se réplique de façon verticale
gbc.fill = GridBagConstraints.VERTICAL;
content.add(messageField, gbc);

带有 messageText 和 stateText,两个字符串

我的问题是我使用了 2 个“for”来放置我的 BUTTONS[3][3],如下所示:

for(int i=1; i<4; i++)
for(int j=0; j<3; j++)
{

   gbc.gridy = j;
   gbc.gridx = i;

   gbc.gridheight=j+1;
   gbc.gridwidth=i+1;

   if(i==3)
    {
        gbc.gridwidth = GridBagConstraints.REMAINDER;
    }
    if(j==2)
    {
        gbc.gridheight = GridBagConstraints.REMAINDER;
    }
    gbc.gridy = j-1;
    gbc.gridx = i-1;

    content.add(BUTTONS[i-1][j], gbc);
}

最后,结果并没有达到预期,事实上,执行给了我这样的结果: https://drive.google.com/file/d/0BxoqzZbxl2ZoY3pRMVh1enVSWm8/view?usp=sharing

enter image description here

你能告诉我哪里错了吗? 如果有更好的方法吗?

最佳答案

这段代码中有一个错误:

gbc.gridy = j-1;
gbc.gridx = i-1;

content.add(BUTTONS[i-1][j], gbc);

某些按钮的 gridy 被设置为 -1。 (当 j = 0 时)

我也不清楚您是否希望 3x3 按钮形成相同大小的网格,或者您希望某些按钮具有特殊尺寸。

如果您希望 3x3 按钮具有相同的尺寸。使用 GridLayout(3,3) 构造另一个 JPanel(在其中添加这些按钮)会更简单。然后您可以一次性将新的 JPanel 添加到主面板。

关于java - JAVA中的GridBagLayout问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30685600/

相关文章:

java - 使用鼠标和图形缩放

java - 为 Java 应用程序创建启动屏幕的最佳方法?

java - 为什么 JTextArea 没有出现在这段代码中?

java - gridbaglayout 的组件能否在调整大小时填充父框架?

java - 在 GridBagLayout 中布局组件不符合预期

java - 如何查找仅包含/由给定字符序列组成的单词

java - 请再次帮助家庭作业。递归乘以偶数?

java - 替换字符串中的单个字符

java - 将 JButton 添加到 JTable 中的特定列

Java构造函数脚本