Sco*_*ick 2 java swing jlabel jpanel grid-layout
如果我将 aJLabel放在JPanel没有严格边界的内部,则当 a 的JPanel大小小于文本时,它不会截断文本。为什么会发生这种情况?不应该JPanel意识到没有足够的空间并相应地截断文本,无论其布局如何?
例如,我创建了JFrame一个GridLayout带有两行和一列的 。在那,我在顶部放置了一个,在底部放置了JPanel一个。每个包含一个.FlowLayoutJPanelBoxLayoutJPanelJLabel
简而言之:为什么JLabel顶部的不截断其文本?
图像来证明我的意思:

同样,这是 SSCCE 来演示效果:
import javax.swing.*;
import java.awt.*;
public class TruncationTest1
{
public static void main(String[] args)
{
JFrame f = new JFrame("Truncation Test");
JPanel panel = new JPanel(); //Default layout, aka FlowLayout
JLabel label = new JLabel("Try resizing the frame: This will not be truncated for some reason.");
JLabel label2 = new JLabel("However, this JLabel, on the other hand, will become truncated.");
f.setLayout(new GridLayout(2,1));
f.setBackground(Color.BLACK);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(panel);
panel.setBackground(Color.WHITE);
panel.add(label);
f.add(label2);
label2.setHorizontalAlignment(JLabel.CENTER);
label2.setForeground(Color.WHITE);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
FlowLayout不会调整其中的组件大小。它显示了具有首选大小的组件。
您需要使用不同的布局来代替FlowLayout适当的调整大小。例如,您可以BorderLayout将标签与 atLINE_START或 一起使用WEST。
| 归档时间: |
|
| 查看次数: |
1054 次 |
| 最近记录: |