Jak*_*ger 0 java swing window repaint
对不起,如果我的标题有点模糊,但我想要做的是让按钮通向另一个屏幕.我正在做一个基本的游戏,所以会有几个.我目前正在尝试做的是选项屏幕.我已经找到了使用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);
}
Run Code Online (Sandbox Code Playgroud)
}
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);
}
Run Code Online (Sandbox Code Playgroud)
}
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);
}
Run Code Online (Sandbox Code Playgroud)
}
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");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |