J'ai un cadre qui contient un bouton et un champ de texte. J'ai écrit un gestionnaire de transfert pour y déposer des fichiers. Toutefois, lorsque je définis le gestionnaire de transfert sur le cadre, seul le bouton accepte la suppression.swing - setTransferHandler pour toute la trame
La solution de contournement que j'ai consiste à définir le gestionnaire de transfert pour tous les composants du panneau.
Quelle est la bonne façon de le faire?
JPanel panel = new JPanel();
flowPanel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JTextField textField = new JTextField();
textField.setMaximumSize(new Dimension(4000, 30));
JButton button = new JButton("Button");
button.setHorizontalAlignment(SwingConstants.LEFT);
TransferHandler newHandler = new TransferHandler() {
public boolean canImport(TransferHandler.TransferSupport info) {
return true;
}
};
// downs't work - only the button accepts a drop
panel.setTransferHandler(newHandler);
// A workaround - does what I want
textField.setTransferHandler(newHandler);
button.setTransferHandler(newHandler);
panel.add(button);
panel.add(textField);
'La solution que j'ai est de définir le gestionnaire de transfert pour tous les composants du panel.' - me semble raisonnable. Vous ne pouvez pas ajouter un KeyListener à un panneau et le faire fonctionner pour tous les champs de texte sur le panneau. – camickr
Eh bien, dans mon cas, j'ai seulement un champ de texte, et de toute façon mon gestionnaire sait quoi faire ... J'ajoute le même gestionnaire à tous les composants, et ça fonctionne bien. Et si cela ne fonctionne pas sur JFrame. pourquoi est-il possible de l'ajouter du tout? – ModdyFire