Можно ли удалить строку заголовка из JFileChooser? - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь отобразить простой JFileChooser, у которого нет заголовка. Ниже приведен пример кода:

package ca.customfilepicker.main;
import java.awt.Component;
import java.awt.HeadlessException;

import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.JFileChooser;

class CustomFileChooser

{

    public static void main(String args[]) {

        JFileChooser chooser = new JFileChooser() {
            @Override
            protected JDialog createDialog(Component parent) throws HeadlessException {
            
                JDialog diag = super.createDialog(parent);
                
                //diag.setUndecorated(true);
                return diag;
            }
        };
        
        chooser.setBorder(BorderFactory.createTitledBorder("Open"));
        chooser.showOpenDialog(null);

    }
}

По сути, я хочу, чтобы граница, которую я установил, была строкой заголовка верхнего уровня. Пример изображения:

https://i.stack.imgur.com/exogU.png

До сих пор мне не повезло в достижении этого, и я не нашел других, ищущих похожий внешний вид. Цените помощь! Ура

1 Ответ

1 голос
/ 11 июля 2020

JFileChooser - это просто компонент Swing. Его можно добавить в любой контейнер.

Таким образом, вы можете создать неукрашенный JDialog и добавить экземпляр JFileChooser в диалоговое окно.

Проблема в том, что теперь «Открыть» и «Отменить» кнопки не закрывают диалоговое окно, поэтому вам придется сделать это вручную. Вероятно, вы могли бы переопределить методы «ApproveSelection () and cancelSelection ()» JFileChooser.

Я бы предположил, что logi c будет вызывать super.approveSelection () или super.cancelSelection () а затем используйте метод SwingUtilities.windowForComponent(...) для получения родительского окна, а затем вызовите dispose() в окне.

...