[英]Java button layout right allign
请有人对我的代码提供一些见识。 我想使“余额”选项卡上的按钮与左上方对齐。 我尝试了不同的布局管理器,但是似乎所有按钮都位于中心,导致相同或相似的结果
public class DefaultView extends JFrame {
public DefaultView() {
JButton SendBalInc = new JButton();
SendBalInc.setText("Balance");
GridBagConstraints c = new GridBagConstraints();
GridBagLayout gridbag = new GridBagLayout();
c.fill = GridBagConstraints.BOTH;
// Bal.fill = GridBagConstraints.NONE;
JPanel window = new JPanel();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 600);
// this.setUndecorated(true);
window.setBackground(Color.WHITE);
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setBackground(Color.WHITE);
JComponent panel1 = makeTextPanel("Panel #1");
tabbedPane.addTab("PIN ", panel1);
JPanel panel2 = new JPanel();
Box box = Box.createHorizontalBox();
box.add(Box.createHorizontalGlue());
box.add(SendBalInc);
panel2.setBackground(Color.WHITE);
panel2.add(box);
tabbedPane.addTab("Balance", panel2);
JComponent panel3 = makeTextPanel("Panel #3");
tabbedPane.addTab("Dep", panel3);
JComponent panel4 = makeTextPanel("Panel #4");
tabbedPane.addTab("Bill", panel4);
window.setLayout(new GridLayout(1, 2));
window.add(tabbedPane);
this.add(window);
}
protected JComponent makeTextPanel(String text) {
JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
return panel;
}
}
我更喜欢GridBagLayout:
final JPanel panel2 = new JPanel();
panel2.setLayout(new GridBagLayout());
panel2.setBackground(Color.WHITE);
final GridBagConstraints cons = new GridBagConstraints();
cons.weightx = 1D;
cons.weighty = 1D;
cons.anchor = GridBagConstraints.NORTHWEST;
panel2.add(box, cons);
tabbedPane.addTab("Balance", panel2);
注意:不需要盒子
您可以简单地使用BoxLayout
JPanel panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXIS));
panel2.setBackground(Color.WHITE);
panel2.add(SendBalInc);
但是我认为Betlista对GridBag的回答可能是更好的选择,因为将来有更多选择来进一步调整布局。
创建Box并将其直接添加到JTabbedPane中,而不是先将其放入面板中。 并将框设置为垂直框,以便可以通过在每个子控件上设置setAlignmentX来控制其子控件的对齐方式。
Box box = Box.createVerticalBox();
box.add(SendBalInc);
tabbedPane.addTab("Balance", box);
您可以在按钮左侧添加以下内容:
panel2.setLayout(new FlowLayout(FlowLayout.LEFT));
您可以在文档http://docs.oracle.com/javase/tutorial/uiswing/layout/layoutlist.html中找到更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.