簡體   English   中英

Java按鈕布局正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM