如果我將JLabel
放在JPanel
的內部,但沒有嚴格的邊界,當JPanel
的大小小於文本大小時,它不會截斷文本。爲什麼會發生? JPanel
不應該認識到沒有足夠的空間&相應地截斷文本,不管它的佈局如何?JLabel在JPanel中不截斷
作爲一個例子,我創建了一個JFrame
與GridLayout
與兩行&一列。在那裏,我放置了一個JPanel
頂部的FlowLayout
,& a JPanel
底部的BoxLayout
。每個JPanel
包含一個JLabel
。
總之:爲什麼頂部的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);
}
}
1)有關Swing中正確線程處理的更多詳細信息,請參見[Swing併發](http://docs.oracle.com/javase/tutorial/uiswing/concurrency/)。特別是關於初始線程的部分。 2)在'f.setVisible(true);' –