1
我有一個似乎沒有道理的擊球手。擺動:BoxLayout和橫向對齊?
如果我運行下面的程序,我會得到兩個對話框,每個對話框都包含JPanel。
第一個有一對夫婦的JLabel是左對齊。第二個擴展第一個,並添加另一個JPanel作爲子面板,但標籤組是右對齊的(即使在組內它們左對齊)。什麼給,以及如何解決它,使一切都是左對齊? (或者我將如何將它們全部對齊?)
package com.example.test.gui;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class BoxLayoutQuestion {
public static class TestPanel1 extends JPanel
{
public TestPanel1()
{
super();
initTestPanel1();
}
void initTestPanel1()
{
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(new JLabel("Four score and seven years ago"));
add(new JLabel("One small step for man"));
add(new JLabel("To be or not to be, that is the question"));
}
}
public static class TestPanel2 extends TestPanel1
{
public TestPanel2()
{
super();
initTestPanel2();
}
void initTestPanel2()
{
JPanel subpanel = new JPanel();
subpanel.setBorder(
BorderFactory.createTitledBorder("something special"));
subpanel.add(new JLabel("Where's the beef?"));
add(subpanel);
}
}
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, new TestPanel1(),
"quotations", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, new TestPanel2(),
"more quotations", JOptionPane.INFORMATION_MESSAGE);
}
}
謝謝,這是訣竅! (+也可以讓我右對齊,如果我喜歡) –
(FWIW,它看起來像你可以先添加它們,然後做setAlignmentX(),並且這也起作用我創建了一個addAligned()方法,以便我可以多次使用它。) –