Frage

Wie kann ich die Titelleiste eines JFrame mache Marquee in HTML wie Zelt zu sein, wenn Sie den Marquee-Tag verwenden?

War es hilfreich?

Lösung

Gott vergib mir für den folgenden Code

Setzen Sie diesen Code in Ihrem Rahmen Konstruktor, wenn Sie das Marquee wollen direkt nach dem Laden zu starten:

    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
Gemäß den Kommentaren ist, hier eine andere Version mit 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();

Dieser Code ist für einen bestimmten Zweck zu lernen nur, bitte nicht in einem realen Produkt.

Andere Tipps

Bitte nicht.

Wenn Sie entscheiden haben, dann ist die offensichtliche Technik ist es, setTitle mit einer Subsequenz des gewünschten Text ein. Ich denke, verschiedene Teilgroße Räume in Unicode können Sie erlauben, die etwas weicher zu machen (oder sie könnten als Quadrate angezeigt).

Alternativ können Sie das Fenster machen PL & F dekoriert (nicht funktioniert mit der nativen PL & F in der Sun / Oracle-Implementierung) und ziehen Sie den Text selbst. Um gut auszusehen, dann würden Sie stimmen müssen es auf die spezielle PL & F und Konfiguration.

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

Versuchen Sie dies, narrensicher. Und leichter zu verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top