网格布局有两列,每边都有50%的空间,无论组件的大小是多少。 SetPrefferedSize似乎也不起作用 - 但我不应该需要它,这可以自动完成,对吗?
我可以将第一行的宽度调整为适合“SomeOtherLongText3:”吗?
SSCCE:
package test;
import java.awt.*;
import javax.swing.*;
public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel detailsPanel = new JPanel();
detailsPanel.setLayout(new GridLayout(0, 2, 15, 0));
// Add to left side (WEST)
frame.add(detailsPanel, BorderLayout.WEST);
// Add some labels:
detailsPanel.add(getLabel("Some text:"));
detailsPanel.add(new JLabel("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id mauris "));
detailsPanel.add(getLabel("Some text 2:"));
detailsPanel.add(new JLabel("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id mauris "));
detailsPanel.add(getLabel("Some other text 3:"));
detailsPanel.add(new JLabel("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc id mauris "));
frame.setSize(new Dimension(900, 100));
frame.setVisible(true);
frame.pack();
}
public static JLabel getLabel(String text)
{
JLabel lbl = new JLabel(text);
lbl.setHorizontalAlignment(SwingConstants.TRAILING);
return lbl;
}
}
另外,另一个问题是您可以重新调整窗口大小以剪切文本:
答案 0 :(得分:4)
GridLayout
的{{1}}(标签)和WEST
(值)中放置2个单列CENTER
个实例。将外部面板添加到BorderLayout
或父.. WEST
。这可能会更好,因为您可以使用HTML / CSS来限制值的宽度并将它们强制为多行。