Wie man einen JButton innerhalb eines JTextField (Java)?
Ich möchte einen JButton (mit einem Ordner-Symbol, Bild) in einem JTextField, wie Sie über auf der rechten Seite das JTextField, so dass beim anklicken der Schaltfläche öffnet sich ein JFileChooser, und wenn eine Datei ausgewählt ist, wird der Pfad zu der Datei wird im inneren des JTextField.
Ich habe an diesem code, aber nichts zeigt sich.
public class TextFieldChooser extends JTextField {
public ImageIcon folderIcon;
public JButton btnFolder;
public TextFieldChooser(int columns) {
super(columns);
btnFolder = new JButton();
folderIcon = new ImageIcon(getClass().getResource("/resources/folder_find.png"));
btnFolder.setIcon(folderIcon);
this.add(btnFolder);
}
}
- "Favor object composition over class inheritance."—Erich Gamma artima.com/lejava/articles/designprinciples4.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gebäude auf, was Shakedown vorgeschlagen, ich denke, dass kann man den gewünschten Effekt relativ leicht. Was Sie tun ist ein
JPanel
enthält sowohl den text-Bereich und daneben die Taste. Als Nächstes legen Sie das Textfeld nicht ziehen Grenzen und geben dieJPanel
eine schräge Grenze. Jetzt wird es Aussehen, wie der button im text-Bereich. Es könnte etwas Feintuning, aber es sollte funktionieren.Finden Sie die Komponente Grenze hilfreich. Es ermöglicht Ihnen die Anzeige einer Schaltfläche in das Textfeld mit der Grenze API.
Dumöchte nicht setzen Sie einen button in ein Textfeld. Sie müssen brechen Sie Ihre Absicht in mehrere Komponenten - 3, in der Tat.
nichtErsten, die Sie gehen zu müssen, um einen übergeordneten container, oder etwas, dass die beide Ihren text Feld und auch die Taste; ein
JPanel
sollte ausreichen.Dann müssen Sie Ihre Reale Komponenten, und durch real-ich meine diejenigen, die wirklich etwas tun. Dies sind Ihre
JTextField
undJButton
- gehen Sie vor und fügen Sie diese in dieJPanel
. Um Sie und Sie erscheinen, wie Sie wollen (mit dem button in der Ecke), Sie brauchen ein layout für IhreJPanel
. Dieses layout wird festlegen, wo die zusätzlichen Komponenten gehen (visuell) innerhalb desJPanel
.Nun, dass Sie Hinzugefügt haben, diese Dinge in Ihre
JPanel
können Sie arbeiten nur mit IhrerJPanel
anstatt zu denken, in Bezug auf die enthaltenenJTextField
undJButton
.JPanel
ist explizit gedacht als "eine generische Leichtbau-container."Weil Pyrit hat nicht gepostet, seine Letzte Lösung, hier ist meins: