BorderLayout的中心有很大的空隙

时间:2018-08-18 22:43:05

标签: java applet awt layout-manager border-layout

我正在编写一个程序,该程序旨在在窗口的西侧和东侧使用带有两个按钮的BorderLayout。不知何故,中心有很大的差距。有什么方法可以消除此间隙并使两个按钮彼此切线?下面附上我的代码。任何帮助表示赞赏:)。

void Graph::build_BA (int m0, int m) {

  // Initialization
  std::vector<double> cum_nedges;
  std::vector<int> connect_history;
  for (int ID(0); ID<m0; ++ID) {
      vertices.push_back(ID);
  }

  // Initial BA step
  vertices.push_back(m0);
  for (int i(0); i<m; ++i) {
      connect(m0, i);
      connect_history.push_back(i);
  }
  cum_nedges.push_back(1);
  for (int i(1); i<m; ++i) cum_nedges.push_back(cum_nedges[cum_nedges.size()-1]+1);
  cum_nedges.push_back(m+m);

  // BA model
  for (int ID(m0+1); ID<order; ++ID) {
      BA_step(ID, m, cum_nedges);
  }
}

1 个答案:

答案 0 :(得分:2)

BorderLayout确实按照其名称的含义进行操作-将东西放在边界上。这就是中间出现间隙的原因。如果您想让两个按钮并排放置,我建议使用GridLayout以简化操作。代码将如下所示:

GridLayout layout = new GridLayout(1,2); // Or (2,1), depending on how you want orientation
JPanel pane = new JPanel();
pane.setLayout(layout);
pane.add(leftButton); // Where leftButton is the JButton (or other swing component) on the left
pane.add(rightButton); // Same goes for the right JButton
// Then add your JPanel to the Frame and all that jazz below.

如果我正确理解您的问题,这应该可以做您想要的。还要注意,我正在使用Swing组件,因为它们仍由Java维护。如果您需要其他任何帮助,请发表评论/问题。

编辑:请注意,MadProgrammer建议使用GridBagLayout的注释。这比普通的GridLayout功能更强大/用途更广,但也较难学习,因此您可以根据自己的意愿选择要做什么。