Немодальный JDialog не отображает контент? - PullRequest
1 голос
/ 17 января 2012

Я создаю серверную программу, которая получает сокетное соединение от клиента. Когда программа запускает сервер, я хотел бы отобразить диалоговое окно, которое отображает «Ожидание подключения ...», как он ждет. Как только соединение получено, я хотел бы программно закрыть окно. Поскольку я не хочу блокировать выполнение программы, так как она ожидает подключения к сокету, я использовал немодальное диалоговое окно для отображения сообщения. Это работает, за исключением того, что диалоговое окно не отображает текст, который я бы хотел. Заголовок диалога отображается нормально, а панель сообщений - нет. Почему это? Я пробовал несколько разных способов сделать это, включая приведенный ниже код, но все безрезультатно.

public class AboutDialog extends JDialog implements ActionListener 
{
    public AboutDialog(JFrame parent, String title, String message) 
    {
        super(parent, title, false);

        if (parent != null) 
        {
            Dimension parentSize = parent.getSize(); 
            Point p = parent.getLocation(); 
            setLocation(p.x + parentSize.width / 4, p.y + parentSize.height / 4);
        }

        JPanel messagePane = new JPanel();
        messagePane.add(new JLabel(message));
        getContentPane().add(messagePane);

        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        pack(); 
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e) 
    {
        setVisible(false); 
        dispose(); 
    }
}

На всякий случай, если мое объяснение не понятно, я передаю "Ожидание соединения ..." в конструктор AboutDialog в качестве параметра сообщения. Спасибо за любое руководство!

1 Ответ

2 голосов
/ 17 января 2012

Вы, вероятно, не открываете (и не закрываете) свой диалог в потоке отправки событий (используя SwingUtilities.invokeLater() из основного потока / потока прослушивания).

Тем не менее, наличие графического интерфейса для серверного приложения - этовероятно, не очень хорошая идея в любом случае.Серверные приложения часто работают на автономных серверах и часто запускаются как службы / демоны.Использование файла журнала, вероятно, является лучшей идеей, чем использование графического интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...