2

我不知道这些布局是什么。

  1. 首先图片如何使这组按钮位于 TextArea 的右侧(请发布一些代码示例,谢谢)

  2. 如何使这个 JTextArea 如此大的图片。

  3. 第二张图片如何在面板的左侧和右侧制作这些空字段。

  4. 第二张图:如何获得 JTextArea 和 JTextField 的大小。

其他的很简单,所以我不问他们

首先 http://img98.imageshack.us/img98/8504/84871015.png

第二个 http://img18.imageshack.us/img18/3372/93341349.png

4

3 回答 3

2

虽然实现这些布局的方法不止一种,但我猜你正在看的GridBagLayout是最灵活但也是最难做到的。

您的第一张图片有六行四列。字段占据前三行的所有列;文本区域占据第四行到第六行的第一列;按钮占据单个单元格。

您的第二张图片有四行六列。文本区域为一列三行,文本字段为一行六列,按钮为每个单元格。

Oracle 提供了一个关于它的教程- 如果您通过他们的示例工作,您应该能够制作自己的布局,看起来像您图片中的布局。

于 2012-05-22T22:40:10.740 回答
1

仅通过查看图片就无法准确判断使用了哪种布局,因为您可以通过多种不同的方式实现这些布局。如果您考虑调整行为的大小,则尤其如此。

但是我怀疑答案是:

  1. 可能是包含在 BorderLayout 中的 GridLayout(参见:http ://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html)

  2. 可能使用 BorderLayout 或 GridLayout - 这两者都会扩展文本区域以填充屏幕的相关区域。

  3. 可能是一个 BorderLayout,使用东和西面板作为文本字段。

  4. 同样可能是一个边框布局,底部面板中有文本字段。

虽然您可以使用标准布局管理器清楚地完成所有这些工作,但如果我想复制这些布局,那么我可能会使用MigLayout,它是一个非常灵活的通用布局管理器。

于 2012-05-22T22:56:31.933 回答
1

JButtons是按用途放置的,GridBagLayout()我给你一些类似的例子如何做到这一点。

controls = new JPanel();
controls.setLayout(new GridBagLayout());
GridBagConstraints d = new GridBagConstraints();
        d.fill = GridBagConstraints.BOTH;
        d.weightx = 1;
        d.weighty = 1;
        seven = new JButton("7");
        buttonsList.add(seven);
        d.gridx = 0;
        d.gridy = 2;
        d.insets = new Insets(0, 4, 4, 4);
        controls.add(seven, d);

        eight = new JButton("8");
        buttonsList.add(eight);
        d.gridx = 1;
        d.gridy = 2;
        d.insets = new Insets(0, 0, 4, 4);
        controls.add(eight, d);

        nine = new JButton("9");
        buttonsList.add(nine);
        d.gridx = 2;
        d.gridy = 2;
        d.insets = new Insets(0, 0, 4, 4);
        controls.add(nine, d);

        plus = new JButton("+");
        buttonsList.add(plus);
        d.gridx = 3;
        d.gridy = 2;
        controls.add(plus, d);

        four = new JButton("4");
        buttonsList.add(four);
        d.gridx = 0;
        d.gridy = 3;
        d.insets = new Insets(0, 4, 0, 4);
        controls.add(four, d);
于 2012-05-22T22:46:03.440 回答