JTextField показывает «...», когда содержимое слишком длинное - PullRequest
2 голосов
/ 13 февраля 2012

Я пытаюсь заставить JTextField отображать точки, когда его содержимое длиннее, чем область отображения.Я хотел бы иметь такое же поведение, как в JTable, где, когда я изменяю размер столбца, текст внутри изменяется - когда его на долгое время отображается только начало, а затем появляются три точки (чтобы увидеть, что я имею в виду, пожалуйста, запуститепервый пример из этой ссылки и изменения размера столбца - я не могу публиковать изображения, потому что я здесь новичок;))

Возможно ли это?Единственное решение, которое я имею в виду, - это расширение JTextField с помощью класса, который будет иметь дополнительное поле oryginalText и будет вести себя так (не проверял, это просто предложение, измерение 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);
    }
}

есть идеи?

1 Ответ

0 голосов
/ 10 декабря 2014

По вашей идее расширения JTextField и сохранения исходного (не усеченного) значения:

Показать текстовое поле как отключенное (или не редактируемое) и с обрезанным текстом. Когда пользователь нажимает на текстовое поле, сделайте его включенным / редактируемым и покажите весь оригинальный текст.

Затем снова, когда пользователь нажимает ввод или фокус выходит из текстового поля: отключить / не редактировать и обрезать текст.

...