java在JFrame中的JPanel之间切换
现在我知道这方面有很多很多问题,我已经读了十几篇。但我刚刚撞到墙了,我弄不清它的头绪
这是我的问题
我有三个小组课
ConfigurePanel.java
ConnectServerPanel.java
RunServerPanel.java
还有我的JFrame课程
StartUPGUI.java
这是启动时初始化的内容
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
startUp = new sjdproject.GUI.ConfigurePanel();
runServer = new sjdproject.GUI.RunServerPanel();
serverConnect = new sjdproject.GUI.ConnectServerPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
jPanel1.setLayout(new java.awt.CardLayout());
jPanel1.add(startUp, "card2");
jPanel1.add(runServer, "card4");
jPanel1.add(serverConnect, "card3");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(27, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 419, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(38, 38, 38))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(27, 27, 27)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 281, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(30, Short.MAX_VALUE))
);
我的StartUPGUI首先调用StartUpPanel。在我的创业板里。java我有一个按钮,可以在StartUPGUI中调用setPanel方法
StartUpGUI s = new StartUpGUI();
String str = "";
if(runserverbtn.isSelected()){
str = "runserver";
}
else if(connectserverbtn.isSelected()){
str = "connectserver";
}
else{
str = "";
}
s.setPanel(str);
这是我的setPanel方法
void setPanel(String str){
if(str == "runserver"){
}
else if(str == "connectserver"){
}
else{
}
}
我需要在if块中放置什么来更改面板视图?我会假设jPanel1。但我不知道那是什么
# 1 楼答案
不要将字符串与
==
进行比较,它将不起作用。使用.equals
if("runserver".equals(str)){
您需要使用来自
CardLayout
的方法.show
public void show(Container parent, String name)
-使用addLayoutComponent,翻转到以指定名称添加到此布局的组件。如果不存在这样的组件,那么什么也不会发生有关更多详细信息,请参见How to Use CardLayout,有关更多方法,请参见API
更新
试着运行这个例子,并用你的代码检查它,看看你是否注意到任何有用的东西
更新2
问题是,按钮在
ConfigurePanel
类中。尝试在该类中创建一个新的StartUPGUI
不会引用相同的组件。您需要做的是将StartUPGUI
的引用传递给ConfigurePanel
。像这样的然后像这样从
StartUPGUI
实例化ConfigurePanel