我正在编写一个程序,该程序旨在在窗口的西侧和东侧使用带有两个按钮的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);
}
}
答案 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
功能更强大/用途更广,但也较难学习,因此您可以根据自己的意愿选择要做什么。