Подтвердить что ты не робот

Выбор текста из JLabel?

Можно ли включить выбор текста из JLabel? Если нет, то какой лучший альтернативный контроль использовать, и как его можно настроить как JLabel?

4b9b3361

Ответ 1

A JTextField не позволяет html-форматированный текст, как JLabel. Если вы хотите выбрать html-текст, вы можете попробовать JTextPane для форматирования html:

JTextPane f = new JTextPane();
f.setContentType("text/html"); // let the text pane know this is what you want
f.setText("<html>Hello World</html>"); // showing off
f.setEditable(false); // as before
f.setBackground(null); // this is the same as a JLabel
f.setBorder(null); // remove the border

Ответ 2

Вы можете использовать JTextField без включения редактирования

JTextField f=new JTextField("Hello World");
f.setEditable(false);
content.add(f);

Пьер

Ответ 3

Основываясь на ответах: Вы можете использовать JTextField без включения редактирования

JTextField f=new JTextField("Hello World");
f.setEditable(false);
f.setBackground(null); //this is the same as a JLabel
f.setBorder(null); //remove the border

Я не знаю, как остановить текст из "Прыжки" при его выборе или заменить текст (программно). Может быть, это просто мой компьютер...

Ответ 4

При использовании JTextField вы также захотите удалить границу: f.setBorder(null);

и установите цвет отключенного текста: f.setDisabledTextColor(Color.black);

Ответ 5

В качестве варианта ниже CopyableLabel поддерживает html-теги и шрифты как JLabel.

public class CopyableLabel extends JTextPane {

    private static final long serialVersionUID = -1;

    private static final Font DEFAULT_FONT;

    static {
        Font font = UIManager.getFont("Label.font");
        DEFAULT_FONT = (font != null) ? font: new Font("Tahoma", Font.PLAIN, 11);
    }

    public CopyableLabel() {
        construct();
    }

    private void construct() {
        setContentType("text/html");

        setEditable(false);
        setBackground(null);
        setBorder(null);

        putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true);
        setFont(DEFAULT_FONT);
    }
}

Ответ 6

JLabels нельзя редактировать.

Однако вы можете использовать JTextField и просто менять цвета переднего плана/фона, чтобы он выглядел как JLabel. Если вы действительно хотите, чтобы вы могли добавить код, чтобы изменить цвета, когда он выбран, чтобы указать, что он доступен для редактирования.