对不起,如果我的标题有点模糊,但我想要做的是让按钮通向另一个屏幕.我正在做一个基本的游戏,所以会有几个.我目前正在尝试做的是选项屏幕.我已经找到了使用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); }
}
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");