шатер в строке заголовка в JFrame - PullRequest
0 голосов
/ 22 марта 2010

Как сделать строку заголовка JFrame такой, чтобы она была похожа на область выделения в HTML, если вы используете тег marquee?

Ответы [ 3 ]

2 голосов
/ 22 марта 2010

Пожалуйста, не надо.

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

В качестве альтернативы, вы можете сделать окно PL & F оформленным (не работать с собственным PL & F в реализации Sun / Oracle) и нарисовать текст самостоятельно. Чтобы хорошо выглядеть, вам нужно настроить его на конкретную PL & F и конфигурацию.

1 голос
/ 22 марта 2010

Боже, прости меня за следующий код

Поместите этот код в конструктор фреймов, если вы хотите, чтобы выделение запускалось сразу после загрузки:

    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);

UPDATE
Согласно комментариям, здесь есть еще одна версия с использованием swing.Timer

    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();

Этот код предназначен только для целей обучения, не используйте его в реальном продукте.

0 голосов
/ 22 мая 2013
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);
}

Попробуй это, дурак. И легче понять.

...