Das Anpassen von JPopupMenu in JFileChooser ist eine Methode, die uns den Zugriff auf interne Komponenten ermöglicht. Auf diese Weise können wir dem Dateiauswahldialog ein benutzerdefiniertes Popup-Menü hinzufügen und die internen Komponenten bearbeiten. Diese Technik ist sehr nützlich, wenn bestimmte Anforderungen erfüllt werden, z. B. das Hinzufügen zusätzlicher Funktionsschaltflächen oder das Ändern der Standardmenüelemente. In diesem Artikel stellt der PHP-Editor Xinyi vor, wie Sie durch Anpassen von JPopupMenu auf die internen Komponenten von JFileChooser zugreifen können, um eine flexiblere und personalisiertere Dateiauswahlfunktion zu erreichen. Lass uns einen Blick darauf werfen!
Der Zugriff von JFileChooser
调用的 JPopupMenu
并自定义它(背景、前景、边框)?问题是弹出窗口是在 sun.swing.FilePane
内创建的,我无法访问它,因为默认情况下无法访问 sun.*
包。开发新的 FileChooser
ist nicht möglich, da viel Arbeit geleistet wurde.
Hast du eine Idee?
Ich habe versucht, die verschachtelten Komponenten zu durchlaufen, aber es hat keine Ergebnisse erbracht, da FilePane
nicht importiert werden konnte. FilePane
,因此没有产生任何结果。
sun.swing.filepane
扩展了 jpanel
,您可以搜索这个 jpanel
并获取 jpopupmenu
sun.swing.filepane
erweitert jpanel
, Sie können dieses jpanel
durchsuchen und jpopupmenu
erhalten. 🎜
import java.awt.*; import java.util.Objects; import java.util.stream.Stream; import javax.swing.*; public class FileChooserPopupMenuTest { public static void main(String[] args) { EventQueue.invokeLater(() -> { JFileChooser chooser = new JFileChooser(); descendants(chooser) .filter(JPanel.class::isInstance) .map(c -> ((JPanel) c).getComponentPopupMenu()) .filter(Objects::nonNull) .findFirst() .ifPresent(popup -> { popup.addSeparator(); popup.add(new JCheckBoxMenuItem("JCheckBoxMenuItem")); }); chooser.showOpenDialog(null); }); } public static Stream<Component> descendants(Container parent) { return Stream.of(parent.getComponents()) .filter(Container.class::isInstance) .map(Container.class::cast) .flatMap(c -> Stream.concat(Stream.of(c), descendants(c))); } }
Das obige ist der detaillierte Inhalt vonAnpassen von JPopupMenu in JFileChooser: Zugriff auf interne Komponenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!