выделение в строке заголовка в JFrame
Вопрос
Как я могу сделать строку заголовка JFrame выделенной, как выделенная строка в HTML, если вы используете тег marquee?
Решение
Боже, прости меня за следующий код
Поместите этот код в свой конструктор фреймов, если вы хотите, чтобы маркер запускался непосредственно после загрузки:
int delay = 3000;
int period = 50;
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
int spaces=0;
public void run() {
String title="";
for (int j = 0; j < spaces; j++) {
title+= " " ;
}
title+= "Annoying";
Main.this.setTitle(title);
spaces=(spaces+1)%50;
}
}, delay, period);
Обновить
Согласно комментариям, вот другая версия, использующая swing.Таймер
Timer timer = new Timer(delay,new ActionListener(){
int spaces=0;
public void actionPerformed(ActionEvent e) {
String title="";
for (int j = 0; j < spaces; j++) {
title+= " " ;
}
title+= "Annoying";
Main.this.setTitle(title);
spaces=(spaces+1)%50;
}}
);
timer.start();
Этот код предназначен только для изучения, пожалуйста, не используйте его в реальном продукте.
Другие советы
Пожалуйста, не надо.
Если вы все-таки решите, то очевидным методом является установка заголовка с последующим введением требуемого текста.Я предполагаю, что различные пробелы частичного размера в Юникоде могут позволить вам сделать их немного более плавными (или они могут выглядеть как квадраты).
В качестве альтернативы, вы могли бы оформить окно PL & F (не будет работать с собственным PL & F в реализации Sun / Oracle) и нарисовать текст самостоятельно.Чтобы хорошо выглядеть, вам нужно будет настроить его в соответствии с конкретным дизайном и конфигурацией.
int delay = 0;
int period = 500;
t.scheduleAtFixedRate(new TimerTask(){
String test = " Test marquee";
int i = 0;
public void run(){
titleChanger(test.substring(i, test.length()));
i++;
if(test.length()==i){
i = 0;
}
}
}, delay, period);
Timer t = new Timer();
public void titleChanger(String t){
this.setTitle(t);
}
Попробуй это, защита от дураков.И его легче понять.