java supprimer un composant

Actuel je peux ajouter un tas de personalisés des objets composant le Composite en appuyant sur "ajouter" JButton. J'ai aussi eu un "supprimer" JButton que je veux faire le contraire de "ajouter".

Mon intention est que je peux sélectionner un composant avec une souris et cliquez sur le bouton supprimer et pressto!, le composant est allé.

- Je brancher un MouseListener pour le panneau, et l'utilisation MouseEvent, e.getComponent() pour obtenir w/e de la composante de clics de la souris sur. Donc, si elle renvoie un composant personnalisé alors une variable "privé myComponent actuel" (déjà défini à null) point à ce composant. Alors je peux juste cliquer sur le bouton "supprimer" pour le supprimer. Un actionListener déjà ajouté dans le bouton "supprimer" et dans le corps, il appelle cette.supprimer(en cours) (si le courant n'est pas nul).

Toutefois, cela ne fonctionne pas car je ne peux pas supprimer un composant! Un pointeur?

Si il est une manière élégante de la gestion d'ajouter/supprimer des composants s'il vous plaît suggérer!

public class MainDisplayPanel extends JPanel implements ActionListener, MouseListener{
private JButton newClassButton;
private JButton deleteButton;
private Resizable current;
private Resizable resizer;
public MainDisplayPanel(LayoutManager layout) {
super(layout);
newClassButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addResizer();
}          
});
deleteButton = new JButton("Delete");
deleteButton.addActionListener(this);
this.addMouseListener(this);
this.add(newClassButton);
this.add(deleteButton);
}
public void addResizer() {
//JPanel panel = new JPanel();
//panel.setBackground(Color.white);
resizer = new Resizable( new ClassBox());
this.add(resizer);
this.revalidate();
this.repaint();
}
public void actionPerformed(ActionEvent e) {
if(current!=null)
{
this.remove(current);
this.revalidate();
this.repaint();
}
}
public void mouseClicked(MouseEvent e) {
System.out.println(e);
Component component = e.getComponent();
if(component instanceof Resizable)
current= (Resizable) e.getComponent();
}
public static void main(String[] args) {
JFrame jframe = new JFrame();
jframe.add(new MainDisplayPanel(null));
jframe.setSize(new Dimension(600,400));
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
Doh!

Maintenant, dans le addResizer() la méthode. Chaque fois que j'appuie sur le bouton ajouter pour ajouter un nouvel objet Redimensionnable, est-ce qu'arriver à la déjà ajouté des objets? Je suis certain qu'ils sont nuls parce que resizer variable n'est plus en se référant à eux??? Même si c'est le cas, ils sont toujours affichés sur le panneau...Et si j'appuie sur supprimer uniquement le nouvellement ajouté Redimensionnable objet est supprimé. Alors, suis-je sur la bonne voie?

Edit: pour résumer mon problème, j'ai accroché le MouseListener à un mauvais objet. Il devrait être Redimensionnable objet au lieu de le groupe. Par conséquent, la variable est toujours null.

  • Peu difficile à dire exactement le problème sans une partie de votre code, mais je dirais une sorte de délimitation de l'étendue de la question (surtout avec anonyme auditeurs). Sinon, je pense que c'est à peu près ce que j'avais essayer aussi...
  • Oui, j'utilise anonyme auditeurs. Ajouté le code dans certains trop.
InformationsquelleAutor bili | 2011-08-23