Вы можете сделать внутреннюю рамку видимой ПОСЛЕ создания рабочего стола и увидеть основной раму. В этом случае кадр будет выбран по умолчанию.
Так, один пример того, что вы можете сделать:
- Создание основной рамы
- Создание рабочего стола
- Создать внутренний каркас, но не делают его видимым
- Начало нить, которая устанавливает видна true на внутреннем фрейме, но поток может ждать, пока не будет показан рабочий стол
- Сделать вид основной рамы
- В нитке c все internalFrame.setVisible (true) и выход из потока.
В таком случае внутренний кадр будет отображаться на рабочем столе, и он будет выбран по вашему желанию.
Возможно, вы придумали другое решение, не используя потоки, но записывая обработчики на события основного фрейма. В любом случае, чтобы сделать внутренний кадр видимым после его показа, вы должны показать его ПОСЛЕ рабочего стола с отображением основного кадра.
Вот пример, который вы можете использовать:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.HeadlessException;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
private Internal internalFrame;
public Main() throws HeadlessException {
super("Internal Frame Test");
setBounds(10, 10, 600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
add(createDesktop(), BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent e) {
internalFrame.setVisible(true);
}
});
setVisible(true);
}
private Component createDesktop() {
JDesktopPane d = new JDesktopPane();
internalFrame = new Internal("first");
d.add(internalFrame);
return d;
}
public static class Internal extends JInternalFrame {
private static final long serialVersionUID = 1L;
public Internal(String title) {
super(title);
setBounds(10, 10, 300, 100);
}
}
public static void main(String[] a) {
new Main();
}
}
Я пробую пример двух комментариев и не правильно работаю – wooshot
Я добавил пример. Можешь попробовать. –
Хорошо! спасибо !! – wooshot