Salut avoir une exigence où, à certaines conditions, je dois noircir le composant swing (champ de texte) en préservant sa valeur de chaîne. c'est-à-dire que le composant ne doit pas montrer quelle valeur de chaîne il contient.Comment noircir un composant Swing?
Répondre
Pour faire texte intégral appel noir
textfield.setForeground(new Color(0,0,0,0))
textfield.setBackground(Color.BLACK)
textfield.setOpaque(true)
pour les empêcher de sélectionner l'appel texte
textfield.setFocusable(false)
Bien qu'une bonne suggestion, mais pourquoi ne pas l'utiliser, 'textField.setForeground (textField.getBackground());', cela sera fait sans maux de tête :-) –
Le texte est visible avec ceci. Je ne veux pas montrer le texte. – GuruKulki
@GuruKulki et Garrett: Pensez également à définir la propriété focusable du champ de texte sur 'false' quand vous le faites également. Sinon, le texte s'affichera lorsque le champ aura le focus et que le texte sera sélectionné. 1+ vote pour votre bonne réponse. –
Vous devez masquer le champ de texte à l'aide .setVisible(false)
, et le remplacer par un autre composant qui est noir (par exemple un JLabel
avec un fond noir). Cela peut être fait en mettant les deux composants (l'étiquette et le champ de texte) dans un JPanel
dédié, les empilant les uns sur les autres. Vous pouvez éventuellement simplement masquer le champ de texte, si vous n'avez pas besoin d'une zone noire à la place. Il existe d'autres méthodes pour ce faire impliquant uniquement le champ de texte, mais aucune n'est infaillible, car différents systèmes d'exploitation rendront les composants Swing différemment (en particulier Mac OS X), remplaçant ainsi la méthode paint()
du champ de texte. ou changer la couleur du texte (comme décrit par @ GarrettHall) ne fonctionnerait pas toujours, par exemple.
Il existe JPasswordField
, qui est un champ de texte qui peut être activé pour afficher * * (ou un autre caractère d'écho) au lieu du contenu réel. C'est probablement le moyen le plus facile.
Si cela ne suffit pas, vous pouvez extraire le contenu et le stocker à l'extérieur, en blanc ou en buvard ou quel que soit le champ et setEnabled(false)
dessus. Lorsque vous activez à nouveau le champ, remettez le contenu. S'il est nécessaire d'utiliser getText()
entre-temps, vous devrez le remplacer pour pouvoir remplacer le contenu stocké si nécessaire.
Vous pouvez utiliser le JLayer Component:
J'ai fait un petit exemple qui fait que les caractères noirs et la zone de texte trop noir, en utilisant seulement JTextField, que vous avez demandé.
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class RunnableTest{
public static void main(String args[]){
JFrame frame = new JFrame("frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JTextField textfield = new JTextField();
textfield.setPreferredSize(new Dimension(400,30));
textfield.setForeground(Color.black);
textfield.setBackground(Color.black);
textfield.setSelectedTextColor(Color.black);
textfield.setSelectionColor(Color.black);
frame.getContentPane().add(panel);
panel.add(textfield);
frame.pack();
frame.setVisible(true);
}
}
cette méthode textfield.setForeground(Color.black);
définit la police au noir, et textfield.setBackground(Color.black);
cette autre méthode définit l'arrière-plan noir.
textfield.setSelectedTextColor(Color.black);
textfield.setSelectionColor(Color.black);
définit la sélection noire afin que vous ne puissiez pas voir ce qui a été sélectionné.
Bien sûr, vous pouvez utiliser le champ de mot de passe comme une alternative, si vous ne voulez pas utiliser JTextField et empêcher l'utilisateur de copier le texte.
EDIT: si vous ne voulez pas que l'utilisateur copie du texte en utilisant CTRL + C, ajoutez un keyadapter au champ de texte pour que vous sachiez quand l'utilisateur a appuyé sur les deux touches au même moment. bien sûr, il y a beaucoup d'autres combinaisons sur d'autres systèmes, mais ce n'est pas la question.
Vous pouvez toujours CTRL-C le texte :) – Durandal
Bien sûr que vous pouvez, c'est un JTextField. et l'utilisateur n'a pas précisé que vous n'aviez pas à le faire. il ne montre pas la valeur. –
Ahha, c'est incroyable, j'ai presque oublié de paramétrer, 'SelectionColours' en commentant, +1, pour cette belle addition :-), bien que ce soit déclaré par @Durandal, cela ne donne qu'une seule option 'JPasswordField' :-) –
Probablement la meilleure façon de le faire serait de supprimer le composant de son contenant et le remplacer par un élément fictif du même type. Cela pourrait être bien encapsulé en créant votre propre composant qui encapsule la permutation des composants (squelette):
public class BlackOutTextField extends JPanel {
private final JTextField realField = new JTextField();
private final JTextField dummyField = new JTextField();
private boolean isBlackedOut;
{
dummyField.setEditable(false);
setLayout(new BorderLayout());
add(realField, BorderLayout.CENTER);
}
public String getText() {
return isBlackedOut ? "" : realField.getText();
}
public void setText(final String text) {
if (!isBlackedOut)
realField.setText(text);
}
public void setBlackedOut(final boolean blackedOut) {
if (this.isBlackedOut != blackedOut) {
this.isBlackedOut = blackedOut;
removeAll();
add(this.isBlackedOut ? dummyField : realField, BorderLayout.CENTER);
revalidate();
}
}
}
Vous avez l'idée.
- 1. Comment déterminer un composant swing?
- 2. pygame-Comment noircir l'écran
- 3. Swing ajouter un nouveau composant
- 4. Composant GUI personnalisé Swing
- 5. Java Swing - Composant groupé
- 6. Composant Swing personnalisé avancé
- 7. Orientation du composant Swing
- 8. Composant Swing non centré
- 9. Comment noircir mon backround vidéo?
- 10. Composant sans fenêtre Swing?
- 11. Swing - Obtenir un nouveau composant sous mouseReleased
- 12. Un composant Java Swing reste désactivé?
- 13. Handle cliquez sur un composant Swing arbitraire
- 14. Quand un composant Swing est-il 'affichable'?
- 15. supprimer un composant de netbeans swing ui
- 16. recherche java swing calendrier rendez-composant composant
- 17. Comment appeler self composant en Java swing?
- 18. Paint swing Composant to Graphics
- 19. Obtenir l'emplacement d'un composant swing
- 20. composant interactif dans Java Swing
- 21. Comment créer ce composant dans Swing?
- 22. Composant Console Java Swing GUI
- 23. SDL_Texture provoque tout noircir
- 24. Swing GroupLayout affiche un seul composant? Comment réparer ça?
- 25. Comment interagir avec un composant swing dynamique ajouté?
- 26. Java Swing: Comment placer un composant sur 2 panneaux différents?
- 27. Scala Swing: comment obtenir un composant enfant Borderpanel
- 28. Comment rendre un composant swing privé public en Java?
- 29. Comment remplacer un composant JTree dans Java Swing?
- 30. Comment créer un composant de progression circulaire dans java swing
et quelle a été votre tentative? –
pas encore trouvé, a essayé de le rendre invisible mais je veux que le fichier soit présent mais ne montre pas les données. – GuruKulki