Donc, j'ai bien tout lu dans les tuto que j'ai trouvé et j'ai bien tout fait comme on m'a dit.
En gros :
Je crée une interface qui implémente le listener que je souhaite : Mouse, List...
Je crée une classe qui implémente ce listener
Je crée une classe de mon composant dans laquelle je code ceci :
addXXXlistener() // J'ajoute
removeXXXlistener() // Je supprime
getlisteners()// Je renvois
fireXXXlistener() // J execute
Mais après ? Comment j'appelle ces méthodes dans mon composant ?
A quel endroit je dois appeler addXXXlistener(),removeXXXlistener(),getlisteners() et fireXXXlistener() ?
Il faut faire gaffe au fait que tu dois associer ton Listener à quelque chose : un bouton par exemple, ou un Panel.
Par exemple, si tu es dans une fenêtre et que tu veux que dans l'un de ses panels la souris soit réactive, tu rajoute monJPanel.addMouseListener(arg).
Le paramètre argument est généralement this.
Le plus simple pour gérer les actions est de faire implémenter ta classe de XXXListener, puis de surcharger les méthodes. Dans celles-ci, tu peux mettre des removeXXXListener.
Quelque part, je me demande si tu ferais pas mieux de commencer par traiter des actions très simples : renvoyer dans la console un string quand tu cliques sur un bouton par exemple. Un site sympa qui pourrais t'aider : Clique ici
ben dans le code de ton composant quand il se passe une action et si un listenet a ete ajoute tu appel la fonction du listener associe
tien exemple d'un listener perso :
package com.daedric.swing.text;
import java.awt.Color;
public interface ChangeStyleEvent {
public void newTextStyle(String font, int size, boolean underline,
boolean strike, boolean bold, boolean italic, Color col);
}
package com.daedric.swing;
import java.awt.Color;
import java.util.ArrayList;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;
import com.daedric.swing.text.ChangeStyleEvent;
import com.daedric.swing.text.Formatter;
import com.daedric.swing.text.TextFormatter;
import com.daedric.swing.text.TextStylizer;
public class DJTextPane extends javax.swing.JTextPane {
public transient static Style def = StyleContext
.getDefaultStyleContext()
.getStyle(
StyleContext.DEFAULT_STYLE);
private static final long serialVersionUID = -8905324578389242069L;
public transient Style style = null;
private ChangeStyleEvent chev = null;
public DJTextPane() {
super();
style = addStyle("default", def);
}
public DJTextPane(StyledDocument doc) {
super(doc);
style = addStyle("default", def);
}
public void appendMess(String s, Color col) {
try {
StyleConstants.setForeground(style, col);
Document doc = getDocument();
doc.insertString(doc.getLength(), s, getStyle("default"));
setCaretPosition(getDocument().getLength());
} catch (BadLocationException e) {
e.printStackTrace();
}
}
public void append(String s) {
try {
Document doc = getDocument();
doc.insertString(doc.getLength(), s, getStyle("default"));
setCaretPosition(getDocument().getLength());
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Color getBckColor() {
return StyleConstants.getBackground(style);
}
public Color getFontColor() {
return StyleConstants.getForeground(style);
}
public int getFontSize() {
return StyleConstants.getFontSize(style);
}
public String getFontUse() {
return StyleConstants.getFontFamily(style);
}
public boolean isBold() {
return StyleConstants.isBold(style);
}
public boolean isItalic() {
return StyleConstants.isItalic(style);
}
public boolean isStrike() {
return StyleConstants.isStrikeThrough(style);
}
public boolean isUnderLined() {
return StyleConstants.isUnderline(style);
}
public void setBckColor(Color couleur) {
StyleConstants.setBackground(style, couleur);
this.setCharacterAttributes(style, true);
}
public void setBold(boolean b) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setBold(style, b);
this.setCharacterAttributes(style, true);
}
public void setColor(Color couleur) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setForeground(style, couleur);
this.setCharacterAttributes(style, true);
}
public void setFont(String f) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setFontFamily(style, f);
this.setCharacterAttributes(style, true);
}
public void setFontSize(int s) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setFontSize(style, s);
this.setCharacterAttributes(style, true);
}
public void setItalic(boolean b) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setItalic(style, b);
this.setCharacterAttributes(style, true);
}
public void setSize(int s) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setFontSize(style, s);
this.setCharacterAttributes(style, true);
}
public void setStrike(boolean b) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setStrikeThrough(style, b);
this.setCharacterAttributes(style, true);
}
public void setUnderLine(boolean b) {
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
StyleConstants.setUnderline(style, b);
this.setCharacterAttributes(style, true);
}
public void insert(TextStylizer textStylizer) {
ArrayList<TextFormatter> dc = textStylizer.getFormatText();
for (TextFormatter tf : dc) {
applyFormatter(tf.getFormatter());
this.append(tf.getText());
}
}
public void applyFormatter(Formatter f) {
this.setUnderLine(f.isUnderline());
this.setStrike(f.isStrike());
this.setBold(f.isBold());
this.setItalic(f.isItalic());
this.setSize(f.getSize());
this.setFont(f.getFont());
this.setColor(f.getColor());
}
public void addChangeStyleListener(ChangeStyleEvent chev) {
this.chev = chev;
}
}
tu noteras les :
if (chev != null)
chev.newTextStyle(getFontUse(), getFontSize(), isUnderLined(),
isStrike(), isBold(), isItalic(), this.getFontColor());
et la fonction
public void addChangeStyleListener(ChangeStyleEvent chev) {
this.chev = chev;
}
listener personnalisé
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.