2012-02-13 140 views
2

當內容長於顯示區域時,我試圖使JTextField顯示點。我想要有與JTable類似的行爲,當我調整列的大小時,內部文本會發生變化 - 只顯示它的長度,然後顯示三個點(請參閱第一個示例從這link和改變列大小 - 我不能張貼圖像,因爲我在這裏是新的;))JTextField在內容太長時顯示'...'

是可能的嗎?只有我心目中溶液與一類,將有更多的領域oryginalText並會那樣做延長JTextField(沒有測試它,它只是一個建議,JtextField的尺寸不會改變):

import javax.swing.JTextField; 

public class MyTextField extends JTextField { 

    private String oryginalText; 
    private int length; 

    @Override 
    public void setText(String text) { 
     oryginalText = text; 
     if (oryginalText.length() > length) 
      super.setText(oryginalText.substring(0, length - 2) + ".."); 
     else 
      super.setText(oryginalText); 
    } 
} 

有什麼想法?

+5

實際上聽起來不太友好。這實際上是文本字段的非標準行爲。 – aioobe 2012-02-13 16:21:11

+2

同意,但另請參見[*用省略號截斷字符串的理想方法*](http://stackoverflow.com/q/3597550/230513)。 – trashgod 2012-02-13 16:59:56

+3

您看到的行爲是「JLabel」的行爲。如果你的文本是不可編輯的,考慮使用它來代替'JTextField' – Robin 2012-02-13 17:00:41

回答

0

在您的擴展的JTextField和存儲原始(未修剪)值的想法:

顯示文本字段爲禁用(或不編輯),用修剪文本。當用戶對文本字段進行復制時,可以啓用/可編輯並顯示整個原始文本。

然後再次當用戶按下輸入或焦點退出的文本字段:禁用/不可編輯和修剪文本。