|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2005
Città: Battipaglia(SA)
Messaggi: 162
|
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??? Ultima modifica di ilop : 30-04-2006 alle 02:12. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Sep 2005
Città: Battipaglia(SA)
Messaggi: 162
|
Possibile che nessuno ne sappia niente!?!?!
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
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 Codice:
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];
}
}
Codice:
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());
}
}
Codice:
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);
}
}
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:29.



















