簡體   English   中英

JPanels中的JLabel大小調整問題

[英]JLabels in JPanels sizing question

我目前正在編寫一個Java應用程序,以顯示數據庫中的想法列表。 每個創意都有一個標題和一個數字,我想將它們與類似的創意一起顯示在欄中。 從下面的圖片中可以看出,我有一些包裝問題。

對當前問題的一小部分剪裁

我想要的是一種以編程方式切斷長創意名稱尾部以適合分配空間的方法。 所以:

如果僅列寬

########################

A really long idea titl

會成為

A really long i... #123

public class IdeaBar extends JPanel implements MouseListener {

private SortingColumn column;
private Idea idea;

private JPanel headPanel;
private JPanel bodyPanel;
private boolean isShrunk;
private boolean mouseToggle;

public IdeaBar(Idea id) {

    this.idea = id;

    this.setDoubleBuffered(true);

    setLayout(new MigLayout("insets 0, hidemode 2", "[grow]", "[32px:32px:32px]0[]"));

    // Head Panel
    headPanel = new JPanel();
    headPanel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
    headPanel.addMouseListener(this);
    headPanel.setBorder(new BevelBorder(BevelBorder.RAISED, null, null,
            null, null));
    headPanel.setBackground(Color.GRAY);
    headPanel.setBackground(idea.getStatus().getColor());
    headPanel.setLayout(new BorderLayout(0, 0));

    // Head Panel Labels
    JLabel titleLabel = new JLabel("" + idea.getTitle());
    titleLabel.setFont(new Font("Dialog", Font.PLAIN, 20));
    titleLabel.setForeground(idea.getStatus().getTextColor());
    headPanel.add(titleLabel, BorderLayout.WEST);

    JLabel numLabel = new JLabel("New label");
    numLabel.setHorizontalAlignment(SwingConstants.RIGHT);
    numLabel.setForeground(idea.getStatus().getTextColor());
    numLabel.setFont(new Font("Tahoma", Font.PLAIN, 20));
    numLabel.setText("#" + idea.getNumber());
    headPanel.add(numLabel, BorderLayout.EAST);
    add(headPanel, "cell 0 0, grow, wrap");

    // Body Panel
    bodyPanel= new IdeaBarBodyPanel(idea);
    this.add(bodyPanel, "grow");

    this.shrink();

}

嘗試將titleLabel而不是WEST添加到CENTER。 因此,應調整其大小以填充剩余的空間,並自動將省略號添加到文本中。 請注意,這可能不適用於每個系統,請參見此處: Java JLabel / JButton:在某些系統上,我會收到“ ...”(省略號),而在某些系統上,我不會。 我怎么能完全禁用省略號?

通用代碼。 查看字符串是否長於您可以顯示的字符串。 如果是這樣,它將切掉無法顯示的部分並添加...


int colLength = 20;

public void addEntry(String entry)
{
    if(entry.length() > colLength)
    {
        entry = entry.substring(0,colLength -3) + "...";
    }
    add(entry)
}

好吧,最后,我只是決定繪畫自己的組件。 無論如何,我都希望對背景進行仔細的控制,所以這對我來說是最好的解決方案。

感謝你們倆,因為您的回答有助於我找到自己的路!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM