View Full Version : JAVA - Pulsante lappeggiante sulla barra delle applicazioni
Salve a tutti!
Sto creando una chat in Java e mi servirebbe il vostro aiuto per una piccola cosetta dell'interfaccia grafica.
In pratica voglio che quando la finestra della chat è ridotta ad icona, il relativo pulsante sulla barra delle applicazioni deve lappeggiante come succede per MSN Messenger, o se non è possibile farlo lampeggiare, vorrei comunque creare un effetto visivo che attiri l'attenzione.
Chi mi da una mano???
Possibile che nessuno ne sappia niente!?!?!
Assumendo che tu stia usando JDIC, basta sostituire periodicamente l'icona. Ti faccio un esempio per la futura piattaforma Java SE 6, che include JDIC (TrayIcon, SystemTray):
FrameSequence.java
package it.tukano.trayicondemo;
import java.awt.*;
public class FrameSequence {
private Image[] frames;
private int frameIndex;
public FrameSequence(Image...frameImages) {
frames = frameImages;
}
public void reset() {
frameIndex = 0;
}
public void nextFrame() {
frameIndex++;
if(frameIndex == frames.length) {
frameIndex = 0;
}
}
public Image getCurrentFrame() {
return frames[frameIndex];
}
}
TrayIconAnimator.java
package it.tukano.trayicondemo;
import java.awt.event.*;
import java.awt.*;
public class TrayIconAnimator implements ActionListener {
private TrayIcon target;
private FrameSequence frames;
private javax.swing.Timer animator;
public TrayIconAnimator(TrayIcon targetTrayIcon, int frameTime,
FrameSequence frameSequence)
{
target = targetTrayIcon;
frames = frameSequence;
animator = new javax.swing.Timer(frameTime, this);
}
public void start() {
animator.start();
}
public void stop() {
animator.stop();
frames.reset();
target.setImage(frames.getCurrentFrame());
}
public void actionPerformed(ActionEvent e) {
frames.nextFrame();
target.setImage(frames.getCurrentFrame());
}
}
Main.java
package it.tukano.trayicondemo;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class Main implements Runnable, ActionListener {
//Crea e avvia Main se SystemTray è supportato.
public static void main(String...args) {
if(SystemTray.isSupported()) {
startApp(createMain());
} else {
System.err.println("SystemTray not available on this platform");
}
}
/*Main o null, a seconda che il caricamento delle immagini vada o meno
a buon fine*/
private static Main createMain() {
try {
return new Main();
} catch(IOException ex) {
ex.printStackTrace();
System.err.println("Cannot load frame images");
return null;
}
}
/*Avvia il main in argomento usando la coda degli eventi AWT/Swing se main
sia diverso da null*/
private static void startApp(Main main) {
if(main != null) {
SwingUtilities.invokeLater(main);
}
}
private TrayIconAnimator animator;
private TrayIcon trayIcon;
/*Genera una sequenza di immagini, un TrayIcon e un animatore. Associa al
TrayIcon l'ActionListener (this) che causa lo spegnimento della jvm*/
public Main() throws IOException {
FrameSequence seq = new FrameSequence(
ImageIO.read(Main.class.getResource("/icons/frame000.png")),
ImageIO.read(Main.class.getResource("/icons/frame001.png")));
trayIcon = new TrayIcon(seq.getCurrentFrame(), "Java™ Sample");
trayIcon.addActionListener(this);
animator = new TrayIconAnimator(trayIcon, 500, seq);
}
/*Operazioni eseguite dall'AWT Event Dispatcher Thread */
public void run() {
try {
SystemTray.getSystemTray().add(trayIcon);
animator.start();
} catch(AWTException ex) {
ex.printStackTrace();
System.err.println(
"An error occurred while adding icon to SystemTray");
}
}
/*L'attivazione dell'icona provoca lo spegnimento della jvm*/
public void actionPerformed(ActionEvent e) {
animator.stop();
SystemTray.getSystemTray().remove(trayIcon);
}
}
A scanso d'equivoci, JDIC sta per Java Desktop Integration Components, un pacchetto non standard (fino a Java SE 5) che puoi scaricare da qui:
https://jdic.dev.java.net/
Usando Java 5 per compilare il codice su riportato dovrebbe essere sufficiente aggiungere le clausole "import":
import org.jdesktop.jdic.tray.*;
nelle unità Main.java e TrayIconAnimator.java
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.