請看看下面的代碼製作JLabel的大小/差距JCheckBox的
import java.awt.GridLayout;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class TestSend extends JFrame
{
private Box names, emails;
private JButton ok;
private Map mMap;
private JLabel nameLabel, emailLabel;
private JPanel mainPanel;
private JScrollPane scroll;
public TestSend()
{
names = new Box(BoxLayout.Y_AXIS);
emails = new Box(BoxLayout.Y_AXIS);
nameLabel = new JLabel("Names");
emailLabel = new JLabel("Email");
mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(2,2));
scroll = new JScrollPane(mainPanel);
mainPanel.add(nameLabel);
mainPanel.add(emailLabel);
mainPanel.add(names);
mainPanel.add(emails);
mMap = new HashMap();
mMap.put("yohan", "[email protected]");
mMap.put("Gihan", "[email protected]");
mMap.put("Sumi", "[email protected]");
mMap.put("mac", "[email protected]");
mMap.put("Jay", "[email protected]");
mMap.put("Rom", "[email protected]");
mMap.put("shane", "[email protected]");
mMap.put("Mafe", "[email protected]");
mMap.put("willi", "[email protected]");
Iterator iter = mMap.entrySet().iterator();
while(iter.hasNext())
{
Map.Entry mEntry = (Map.Entry)iter.next();
JCheckBox cBox = new JCheckBox((String)mEntry.getKey());
names.add(cBox);
if((String)mEntry.getValue() != null && ((String)mEntry.getValue()).length() != 0 && !((String)mEntry.getValue()).equals(""))
{
JLabel lLabel = new JLabel((String)mEntry.getValue());
// lLabel.setPreferredSize(new Dimension(cBox.getPreferredSize().width,cBox.getPreferredSize().height));
emails.add(lLabel);
emails.add(new JPanel());
}
else
{
JLabel lLabel = new JLabel();
//lLabel.setPreferredSize(new Dimension(cBox.getPreferredSize().width,cBox.getPreferredSize().height));
emails.add(lLabel);
emails.add(new JPanel());
}
}
this.add(scroll);
this.pack();
this.setVisible(true);
}
public static void main(String[]args)
{
new TestSend();
}
}
當你執行它,你可以看到比那JCheckBox的JLabel的含有較少的垂直間距。因此,「電子郵件地址」(JLabel)不會顯示在顯示「名稱」(JCheckBox)的同一行中。我怎樣才能解決這個問題?
1)這看起來像表格信息。使用'JTable'。 2)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)(例如,對於佈局問題,沒有第三方API導入)。 –
@AndrewThompson:進口刪除:) –
..代碼編譯?我敢打賭它沒有。 –