Heim > Java > Anpassen von JPopupMenu in JFileChooser: Zugriff auf interne Komponenten

Anpassen von JPopupMenu in JFileChooser: Zugriff auf interne Komponenten

王林
Freigeben: 2024-02-09 11:27:09
nach vorne
979 Leute haben es durchsucht

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!

Frageninhalt

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

Lösung🎜🎜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)));
  }
}
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage