Можно ли включить выбор текста из JLabel? Если нет, то какой лучший альтернативный контроль использовать, и как его можно настроить как JLabel?
Выбор текста из JLabel?
Ответ 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. Если вы действительно хотите, чтобы вы могли добавить код, чтобы изменить цвета, когда он выбран, чтобы указать, что он доступен для редактирования.