如何使摆动窗口在内容之间切换?

 KJ慧兒H妹子Ed 发布于 2023-02-06 16:07

对不起,如果我的标题有点模糊,但我想要做的是让按钮通向另一个屏幕.我正在做一个基本的游戏,所以会有几个.我目前正在尝试做的是选项屏幕.我已经找到了使用revalidate(),repaint()和多个面板执行此操作的基本方法,但每次打开另一个窗口并且看起来效率不高.

这是我的选项屏幕代码,用于处理从主菜单到自身的屏幕更改.

package menu;

import javax.swing.JFrame;
import javax.swing.JPanel;

import main.Window;

public class Options 
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
    JPanel pnlOptions = new JPanel();

public static Button graphics = new Button("Graphics");

public Options()
{
    Listener listener = new Listener();

    frame.add(pnlOptions);
    frame.remove(pnlMain);
    pnlMain.revalidate();
    pnlMain.repaint();

    pnlMain.setVisible(false);
    pnlOptions.setVisible(true);

    pnlOptions.add(graphics);

    pnlOptions.revalidate();
    pnlOptions.repaint();

    graphics.addActionListener(listener);
}

}

package menu;

import javax.swing.JFrame;
import javax.swing.JPanel;

import main.Window;

public class Options 
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
    JPanel pnlOptions = new JPanel();

public static Button graphics = new Button("Graphics");

public Options()
{
    Listener listener = new Listener();

    frame.add(pnlOptions);
    frame.remove(pnlMain);
    pnlMain.revalidate();
    pnlMain.repaint();

    pnlMain.setVisible(false);
    pnlOptions.setVisible(true);

    pnlOptions.add(graphics);

    pnlOptions.revalidate();
    pnlOptions.repaint();

    graphics.addActionListener(listener);
}

}

package menu;

import javax.swing.JFrame;
import javax.swing.JPanel;

import main.Window;

public class Options 
{
JPanel pnlMain = Window.pnlMain;
JFrame frame = new main.Window();
    JPanel pnlOptions = new JPanel();

public static Button graphics = new Button("Graphics");

public Options()
{
    Listener listener = new Listener();

    frame.add(pnlOptions);
    frame.remove(pnlMain);
    pnlMain.revalidate();
    pnlMain.repaint();

    pnlMain.setVisible(false);
    pnlOptions.setVisible(true);

    pnlOptions.add(graphics);

    pnlOptions.revalidate();
    pnlOptions.repaint();

    graphics.addActionListener(listener);
}

}

1 个回答
  • CardLayout将帮助切换帧内的内容.基本上我们在一个框架内切换面板,而不是打开一个新窗口.希望这就是你的意思

    http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

    //是的,根面板必须在那里.必须将所有卡添加到其中

    Jpanel rootPanel = new JPanel(new CardLayout()); 
    
    //to add a panel
    Jpanel card1= new Jpanel();
    rootPanel.add(card1,"NameofFirstPanel");
    
    //to switch to a card, say on a button press
    CardLayout cards = (CardLayout)  rootPanel.getLayout();
    
    cards.show(rootPanel,"nameOfFirstPanel");
    

    2023-02-06 16:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有