Как обычно, я провожу весь день, пытаясь выяснить проблему и найти ответ после того, как я попросил о помощи ...
Возможно, кто-то может заполнить более подробную информацию, но я создавалотдельные формы с комбинацией рабочего стола и области содержимого, и все работает как положено.Что я не нашел в документации для JInternalFrames, так это то, что JInternalFrame находится на рабочем столе, а в главном окне нет области содержимого.
Когда я помещал внутренние рамки на рабочий стол / область содержимого,это не позволило бы кадрам подняться на вершину при выборе.Это заставило меня поверить в то, что мне нужно было управлять внутренним фреймом вручную, и поэтому использовался FocusListener.
Удаление панели содержимого из микса устраняет проблему, и все работает, как и ожидалось, и это облегчение, которое я не мог понятьпочему это должно быть сделано вручную.Исправленный код выглядит следующим образом.
public class IntFrmTest extends JFrame {
private JPanel contentPane;
private JDesktopPane desktop;
private int formHeight=675;
private int formWidth=950;
public IntFrmTest() {
this.setTitle("Desktop");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(10, 10, formWidth, formHeight);
this.setMinimumSize(new Dimension(640,480));
this.setResizable(true);
desktop = new JDesktopPane();
setContentPane(desktop);
this.setVisible(true);
this.setLocationRelativeTo(null);
frmTesting frmTest1=new frmTesting(1);
frmTest1.setVisible(true);
desktop.add(frmTest1);
frmTest1.setVisible(true);
frmTesting frmTest2=new frmTesting(2);
frmTest2.setVisible(true);
desktop.add(frmTest2);
frmTesting frmTest3=new frmTesting(3);
frmTest3.setVisible(true);
desktop.add(frmTest3);
}
public class frmTesting extends JInternalFrame {
private int formHeight=375;
private int formWidth=450;
public frmTesting(int frameNo) {
super("Internal Frame "+frameNo,false,true,false,false);
this.setName("frmTest"+frameNo);
this.setSize(formWidth,formHeight);
JPanel pnlDisplay = new JPanel();
this.setContentPane(pnlDisplay);
pnlDisplay.setLayout(null);
this.setLocation(30*frameNo,30*frameNo);
this.setVisible(true);
}
}
public static void main(String[] args) {
IntFrmTest ift=new IntFrmTest();
}
}
Я наткнулся на ответ, когда начал исследовать корневую панель .