メイン フレームに内部フレームを作成しましたが、古い内部フレームから別の内部フレームを開きたいと考えています。
私はそれを行う方法がわかりません。助言がありますか?
別の内部フレームを開くために、さまざまな方法をいくつか試しました。
- setVisible(true) メソッドを使用しましたが、機能しません。
- mainFrame のオブジェクトを作成しましたが、正しいメソッドを取得できませんでした。
私はそれをグーグルで検索し、スタックオーバーフローを検索しましたが、答えが見つかりませんでした。
さて、Java チュートリアルHow to Use Internal Frames から始めることができます。
しかし、可能なプロセスは次のようなものかもしれません
JInternalFrame newFrame = JInternalFrame();
newFrame.setBounds(10, 10, 100, 100);
newFrame.setVisible(true);
getParent().add(newFame); // assuming our current class is a JInternalFrame on a JDeskTop
次のようなことができます:
public class InternalFrameDemo extends JFrame {
static int openFrameCount = 0;
static final int xOffset = 30, yOffset = 30;
JDesktopPane desktop;
public InternalFrameDemo() {
super("InternalFrameDemo");
final int inset = 50;
final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset * 2);
// Set up the GUI.
desktop = new JDesktopPane(); // a specialized layered pane
createFrame(); // create first "window"
setContentPane(desktop);
}
protected void createFrame() {
final JInternalFrame frame = new JInternalFrame("Document #" + ++openFrameCount);
frame.setLocation(xOffset * openFrameCount, yOffset * openFrameCount);
frame.setSize(200, 100);
frame.setVisible(true);
frame.getContentPane().add(createButton());
desktop.add(frame);
try {
frame.setSelected(true);
} catch (final java.beans.PropertyVetoException e) {
}
}
private JButton createButton() {
return new JButton(new AbstractAction("New") {
@Override
public void actionPerformed(final ActionEvent e) {
createFrame();
}
});
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
final InternalFrameDemo frame = new InternalFrameDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(final String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
}