Иконка JFrame, отображаемая за модальным JDialog при щелчке на панели задач win 7 - PullRequest
0 голосов
/ 14 июня 2011

Первоначально я разработал следующий код на Win XP.Когда вы щелкаете значок программы на панели задач XP, родительский фрейм остается пиктограммой, и JDialog возвращается в фокус, и это именно то поведение, которое мне нужно.Однако, если щелкнуть значок панели задач программы в Win 7, родительский JFrame изменит свое состояние обратно на «Нормальное» и отобразится за модальным приложением JDialog.Я попытался переопределить метод setExtendedState () JFrame, чтобы перехватить изменение состояния кадра без удачи.

Есть ли обходной путь для этого, или в моей логике есть недостатки?

import java.awt.*;

import javax.swing.JDialog;
import javax.swing.JFrame;

public class TestLogin extends JFrame {

public TestLogin() {
    this.setSize(300, 300);
    iconify(this);
    setLocationRelativeTo(null);
    this.setTitle("I'm a Frame!");
    this.setVisible(true);
    LoginScreen login = new LoginScreen(this);
}

public static void main(String [] args) {

    TestLogin frame = new TestLogin();  
}

public static void iconify(Frame frame) {
    int state = frame.getExtendedState();

    // Set the iconified bit
    state |= Frame.ICONIFIED;

    // Iconify the frame
    frame.setExtendedState(state);
}

public static void deiconify(Frame frame) {
    int state = frame.getExtendedState();

    // Clear the iconified bit
    state &= ~Frame.ICONIFIED;
    // Deiconify the frame
    frame.setExtendedState(state);
}


public class LoginScreen extends JDialog {

    private JFrame root;

    public LoginScreen(JFrame root) {
        super(root);
        this.root = root;
        setLocationRelativeTo(null);
        this.setTitle("I'm a Dialog!");
        setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
        this.setSize(200, 200);
        setVisible(true);
    }
}
}

1 Ответ

0 голосов
/ 14 июня 2011

Похоже, ошибка в парадигме Java "написать один раз, запустить где угодно". Если это включает в себя Windows 7, то вы можете связаться с оракулом и заполнить отчет об ошибке.

С уважением, Stéphane

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