我的意思是JLabel-JTextField對是一個JLabel組件,後面跟着一個JTextField組件,例如「參數1:-----」其中「-----」 「表示一個空白的JTextField。如何垂直對齊JLabel-JTextField對
問題是,由於參數名稱的長度不同,JLabels的寬度會有所不同,因此JTextField的開頭不會垂直對齊。
有什麼辦法可以將JLabel垂直對齊到右邊,這樣JTextFields的開頭就會對齊嗎?謝謝。
我的意思是JLabel-JTextField對是一個JLabel組件,後面跟着一個JTextField組件,例如「參數1:-----」其中「-----」 「表示一個空白的JTextField。如何垂直對齊JLabel-JTextField對
問題是,由於參數名稱的長度不同,JLabels的寬度會有所不同,因此JTextField的開頭不會垂直對齊。
有什麼辦法可以將JLabel垂直對齊到右邊,這樣JTextFields的開頭就會對齊嗎?謝謝。
有什麼辦法,以垂直對齊中的JLabel自己的權利,所以,一個是遵循JTextField中的啓動會對齊?
1.6+,GroupLayout
。例如。從JavaDoc中:
使用的是將文本的RHS上的標籤對齊。
另請參閱this answer對於MCVE。
父組件的LayoutManager負責定位包含的元素。也許你需要設置一個XYLayout。
請參閱您的父類的setLayoutManager()。
-1,XYLayout不是標準佈局,不應該鼓勵基於絕對定位的佈局管理器,因爲它們不是真正的佈局管理器。 – camickr 2011-05-15 00:35:41
您沒有指定您使用哪種佈局,因此要實現該佈局的良好佈局應該是GridBagLayout。 demo in oracle site是很好的開始。
和短例如:
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("Label 1:"), c);
c.gridx = 1;
c.gridy = 0;
panel.add(new JTextField("TextField 1"), c);
c.gridx = 0;
c.gridy = 1;
panel.add(new JLabel("Label 2:"), c);
c.gridx = 1;
c.gridy = 1;
panel.add(new JTextField("TextField 2"), c);
+1,但是當GUI大小調整時,他們很快就會抱怨中間組件聚集在一起。不要忘記重量和重量。 :) – 2011-05-14 23:13:34
這種方法很好地嵌套在GridLayout的每一行中,作爲一個'LabelTextPanel'(有一個'GridBagLayout')。 – trashgod 2011-05-14 23:52:13
我建議GridLayout佈局管理器。它提供了最簡單的解決方案,以顯示標籤和文本框控件的成對可視化。因此,您只需在實例化時定義行數和列數,並且添加的控件將由經理處理。
但標籤和文本字段被強制爲相同的大小,通常導致非常醜陋的GUI。我建議不要使用這個。 – 2011-05-14 23:11:58
@Hovercraft是正確的,雖然這可以工作,如果標籤和字段是相當的大小和使用@ mkorbel的[答案](http://stackoverflow.com/questions/6005258/how-to-align-jlabel-jtextfield -pairs-垂直/ 6005330#6005330)。 – trashgod 2011-05-14 23:14:22
或
有可能對準裏面JTextComponents只是文字與
JLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
這是我見過良好的解決方案包括使用的GridBagLayout的(如上所述)或MiGLayout,雖然由於後者不是標準Java的一部分,必須在使用之前下載並放置在類路徑中。 MiGLayout不是很難使用。
這是一個完美的使用情況DesignGridLayout:
DesignGridLayout layout = new DesignGridLayout(contentPane);
layout.labelAlignment(LabelAlignment.RIGHT);
layout.row().grid(label1).add(field1);
layout.row().grid(label2).add(field2);
...
包含一個很好的JWS演示。 – trashgod 2011-05-15 10:35:19
它不是標準庫的一部分 – Murmel 2016-10-12 13:03:34
@ user1885518 OP沒有提及它必須是標準庫的一部分。 – jfpoilpret 2016-10-29 08:18:08
這是一個很好的例子['MiGLayout'](http://www.miglayout.com/)中,如果相關性是可以接受的。 – trashgod 2011-05-14 23:19:01
或者jgoodies的'FormLayout' – MeBigFatGuy 2011-05-15 00:01:35