Mise en œuvre d'un simple effet hover sur un Jlabel

Je suis déconner avec quelques idées pour un projet et j'aimerais créer une interface graphique à l'aide de Java swing qui ne ressemblent pas c'est à partir de windows 95. L'une des idées que j'ai été coups de pied autour de a été à l'utilisation JLabels que des boutons au lieu de la norme JButton. Cela me permettrait de personnaliser passez la souris, faites glisser, et des effets de mouvements, comme j'aime.

De recherche dans le MouseAdapter class devrait me permettre de faire tout ce que j'entends, je suis malheureusement un peu de mal à mettre en œuvre le hover effet que je voulais que le JLabel ne semble pas de mise à jour. J'ai essayé de mettre à jour le Cadre directement en appelant frame.update(getGraphics()); mais cela ne semble pas pour travailler comme je le pense.

Puis-je obtenir quelques conseils sur la façon de mettre à jour les étiquettes correctement.

Note: Ceci est juste un exemple avec pas d'efforts pour organiser le code efficacement

public class Window extends JFrame {
/**
* 
*/
private static final long serialVersionUID = 5259700796854880162L;
private JTextField textField;
private JLabel lblNewLabel;
static Window frame;
int i = 0;
public Window() {
JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(null);
lblNewLabel = new JLabel("New label");
lblNewLabel.setBackground(Color.LIGHT_GRAY);
lblNewLabel.setBounds(137, 38, 114, 70);
panel.add(lblNewLabel);
lblNewLabel.addMouseListener(new LabelAdapter());
textField = new JTextField();
textField.setBounds(122, 119, 86, 20);
panel.add(textField);
textField.setColumns(10);
}
private class LabelAdapter extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
textField.setText(String.valueOf(i));
i++;
}
@Override
public void mouseEntered(MouseEvent e) {
lblNewLabel.setBackground(Color.CYAN);
}
@Override
public void mouseExited(MouseEvent e) {
lblNewLabel.setBackground(Color.LIGHT_GRAY);
}
}
/**
* @param args
*/
public static void main(String[] args) {
frame = new Window();
frame.setSize(900, 700);
frame.setVisible(true);
}
}
  • JLabel est transparent par défaut. Pensez à désactiver l'un des boutons de contenu et ornithologue à la place...
  • Reportez-vous Lien suivant qui vous aide [lien] stackoverflow.com/questions/11678722/...
  • En utilisant des étiquettes des composants à la place des boutons pour des raisons de fanciness est une mauvaise pratique dans le gui de développement. Il suffit de penser aux gens qui préfèrent un clavier de navigation. Tous vos besoins peuvent être obtenus avec JButton ici.
InformationsquelleAutor JME | 2013-12-30