【问题标题】:Unexpected layout issue using GridLayout使用 GridLayout 的意外布局问题
【发布时间】:2013-07-12 06:33:07
【问题描述】:

我试图让 JPane 填满它的给定空间,但它不会。 这段代码应该是解释性的......

    JPanel memWindow = new JPanel();
    memWindow.setLayout(new GridLayout(1, 4));
    memWindow.add(memField = new JTextField(10));
    memWindow.add(memView = new JButton("VM"));
    memWindow.add(memAdd = new JButton("M+"));
    memWindow.add(memSub = new JButton("M-"));

    JPanel memWindow2 = new JPanel();
    memWindow.setLayout(new GridLayout(1, 4));
    memWindow.add(mem2Field = new JTextField(10));
    memWindow.add(mem2View = new JButton("VM"));
    memWindow.add(mem2Add = new JButton("M+"));
    memWindow.add(mem2Sub = new JButton("M-"));

    JPanel memWindows = new JPanel();
    memWindows.setLayout(new GridLayout(2, 1));
    memWindows.add(memWindow, BorderLayout.SOUTH);
    memWindows.add(memWindow2, BorderLayout.NORTH);

    add(displayWindow, BorderLayout.NORTH);
    add(memWindows);
    add(inputWindow, BorderLayout.SOUTH);

这是我得到的图形用户界面...

.

【问题讨论】:

  • 如果我看到整个代码,我想我可能更有机会帮助你
  • 您尚未接受之前问题的任何答案,所以我想我将跳过回答这个问题。
  • memWindows.add(memWindow, BorderLayout.SOUTH);memWindows.add(memWindow2, BorderLayout.NORTH); 约束没有意义 (BorderLayout.XXX)
  • 三年后回来,我现在意识到这个问题很糟糕(我最糟糕的问题之一),并且对我产生了负面影响。删除会更好吗?

标签: java swing awt layout-manager grid-layout


【解决方案1】:

你的代码有什么问题?

1.你能先解释一下下面的代码吗?

JPanel memWindow2 = new JPanel();
memWindow.setLayout(new GridLayout(1, 4));
memWindow.add(mem2Field = new JTextField(10));
memWindow.add(mem2View = new JButton("VM"));
memWindow.add(mem2Add = new JButton("M+"));
memWindow.add(mem2Sub = new JButton("M-"));

我觉得应该是这样的:

JPanel memWindow2 = new JPanel();
memWindow2.setLayout(new GridLayout(1, 4));
memWindow2.add(mem2Field = new JTextField(10));
memWindow2.add(mem2View = new JButton("VM"));
memWindow2.add(mem2Add = new JButton("M+"));
memWindow2.add(mem2Sub = new JButton("M-"));

2.如果你想通过BorderLayout.XXX指定组件的位置,你应该使用BorderLayout如下:

JPanel memWindows = new JPanel();
memWindows.setLayout(new BorderLayout());
memWindows.add(memWindow, BorderLayout.SOUTH);
memWindows.add(memWindow2, BorderLayout.NORTH);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多