Java 切换面板在我的测验应用程序中不起作用。我正在使用cardlayout
这是我试着按Q2或Q3时的输出图像,面板没有变化 这是gui中面板排列的图像 这是我代码的一部分,我在其中挣扎。请帮忙Java 切换面板在我的测验应用程序中不起作用。我正在使用cardlayout,java,swing,layout-manager,cardlayout,Java,Swing,Layout Manager,Cardlayout,这是我试着按Q2或Q3时的输出图像,面板没有变化 这是gui中面板排列的图像 这是我代码的一部分,我在其中挣扎。请帮忙 public NewJFrame() { initComponents(); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code.
public NewJFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
upperpanel = new javax.swing.JPanel();
qu1 = new javax.swing.JButton();
qu2 = new javax.swing.JButton();
qu3 = new javax.swing.JButton();
qu4 = new javax.swing.JButton();
qu5 = new javax.swing.JButton();
lowerpanel = new javax.swing.JPanel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
parentpanel = new javax.swing.JPanel();
q1 = new javax.swing.JPanel();
question1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField4 = new javax.swing.JTextField();
jTextField5 = new javax.swing.JTextField();
jTextField6 = new javax.swing.JTextField();
q2 = new javax.swing.JPanel();
question2 = new javax.swing.JLabel();
jTextField7 = new javax.swing.JTextField();
jTextField8 = new javax.swing.JTextField();
jTextField9 = new javax.swing.JTextField();
jTextField10 = new javax.swing.JTextField();
jTextField11 = new javax.swing.JTextField();
jTextField12 = new javax.swing.JTextField();
q3 = new javax.swing.JPanel();
question3 = new javax.swing.JLabel();
jTextField13 = new javax.swing.JTextField();
jTextField14 = new javax.swing.JTextField();
jTextField15 = new javax.swing.JTextField();
jTextField16 = new javax.swing.JTextField();
jTextField17 = new javax.swing.JTextField();
jTextField18 = new javax.swing.JTextField();
q4 = new javax.swing.JPanel();
question4 = new javax.swing.JLabel();
jTextField19 = new javax.swing.JTextField();
jTextField20 = new javax.swing.JTextField();
jTextField21 = new javax.swing.JTextField();
jTextField22 = new javax.swing.JTextField();
jTextField23 = new javax.swing.JTextField();
jTextField24 = new javax.swing.JTextField();
q5 = new javax.swing.JPanel();
question5 = new javax.swing.JLabel();
jTextField25 = new javax.swing.JTextField();
jTextField26 = new javax.swing.JTextField();
jTextField27 = new javax.swing.JTextField();
jTextField28 = new javax.swing.JTextField();
jTextField29 = new javax.swing.JTextField();
jTextField30 = new javax.swing.JTextField();
private void qu1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q1");
}
private void qu2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q2");
}
private void qu3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q3");
}
private void qu4ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q4");
}
private void qu5ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
CardLayout card;
card = (CardLayout)parentpanel.getLayout();
card.show(parentpanel, "q5");
}
}
// Variables declaration - do not modify
}
public NewJFrame(){
初始化组件();
}
/**
*从构造函数中调用此方法来初始化表单。
*警告:请勿修改此代码。此方法的内容始终是
*由表单编辑器重新生成。
*/
@抑制警告(“未选中”)
//
私有组件(){
upperpanel=newjavax.swing.JPanel();
qu1=newjavax.swing.JButton();
qu2=newjavax.swing.JButton();
qu3=newjavax.swing.JButton();
qu4=newjavax.swing.JButton();
qu5=newjavax.swing.JButton();
lowerpanel=newjavax.swing.JPanel();
jButton2=newjavax.swing.JButton();
jButton3=newjavax.swing.JButton();
jButton1=newjavax.swing.JButton();
parentpanel=newjavax.swing.JPanel();
q1=newjavax.swing.JPanel();
问题1=newjavax.swing.JLabel();
jTextField1=newjavax.swing.JTextField();
jTextField2=newjavax.swing.JTextField();
jTextField3=newjavax.swing.JTextField();
jTextField4=newjavax.swing.JTextField();
jTextField5=newjavax.swing.JTextField();
jTextField6=newjavax.swing.JTextField();
q2=newjavax.swing.JPanel();
question2=newjavax.swing.JLabel();
jTextField7=newjavax.swing.JTextField();
jTextField8=newjavax.swing.JTextField();
jTextField9=newjavax.swing.JTextField();
jTextField10=newjavax.swing.JTextField();
jTextField11=newjavax.swing.JTextField();
jTextField12=newjavax.swing.JTextField();
q3=newjavax.swing.JPanel();
question3=newjavax.swing.JLabel();
jTextField13=newjavax.swing.JTextField();
jTextField14=newjavax.swing.JTextField();
jTextField15=newjavax.swing.JTextField();
jTextField16=newjavax.swing.JTextField();
jTextField17=newjavax.swing.JTextField();
jTextField18=newjavax.swing.JTextField();
q4=newjavax.swing.JPanel();
question4=newjavax.swing.JLabel();
jTextField19=newjavax.swing.JTextField();
jTextField20=newjavax.swing.JTextField();
jTextField21=newjavax.swing.JTextField();
jTextField22=newjavax.swing.JTextField();
jTextField23=newjavax.swing.JTextField();
jTextField24=newjavax.swing.JTextField();
q5=newjavax.swing.JPanel();
question5=newjavax.swing.JLabel();
jTextField25=newjavax.swing.JTextField();
jTextField26=newjavax.swing.JTextField();
jTextField27=newjavax.swing.JTextField();
jTextField28=newjavax.swing.JTextField();
jTextField29=newjavax.swing.JTextField();
jTextField30=newjavax.swing.JTextField();
私有void qu1ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
卡片布局卡;
card=(CardLayout)parentpanel.getLayout();
卡片显示(父面板,“q1”);
}
私有void qu2ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
卡片布局卡;
card=(CardLayout)parentpanel.getLayout();
卡片显示(父面板,“q2”);
}
私有void qu3ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
卡片布局卡;
card=(CardLayout)parentpanel.getLayout();
卡片显示(父面板,“q3”);
}
私有void qu4ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
卡片布局卡;
card=(CardLayout)parentpanel.getLayout();
卡片展示(父面板,“q4”);
}
私有void qu5ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
卡片布局卡;
card=(CardLayout)parentpanel.getLayout();
卡片显示(家长面板,“q5”);
}
}
//变量声明-不修改
}
您可能只是忘记添加ActionListener
qu1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
qu1ActionPerformed(ev);
}
});
但是,如果我给你一个关于卡片布局工作原理的示例(然后调试你提交的部分代码),我会更快,我会尝试遵循你的代码风格(这是一个示例,而不是你的解决方案,所以我将其保留为至少2张卡片)
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class CardLayoutTest extends JFrame{
private static final long serialVersionUID = 1L;
final static String CARD_1 = "Card1";
final static String CARD_2 = "Card2";
private JPanel cardPanel;
public CardLayoutTest(){
super("CardLayoutTest");
initComponents();
}
private void initComponents() {
this.getContentPane().setLayout(new BorderLayout());
JButton btnCard1 = new JButton("Card1");
btnCard1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
btnCard1_ActionPerformed(ev);
}
});
JButton btnCard2 = new JButton("Card2");
btnCard2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
btnCard2_ActionPerformed(ev);
}
});
cardPanel = new JPanel(new CardLayout());
JPanel card1 = new JPanel();
card1.add(new JLabel("Card1"));
JPanel card2 = new JPanel();
card2.add(new JLabel("Card2"));
cardPanel.add(card1,CARD_1);
cardPanel.add(card2,CARD_2);
this.getContentPane().add(btnCard1,BorderLayout.NORTH);
this.getContentPane().add(btnCard2,BorderLayout.SOUTH);
this.getContentPane().add(cardPanel,BorderLayout.CENTER);
}
private void btnCard1_ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout)cardPanel.getLayout();
card.show(cardPanel, CARD_1);
}
private void btnCard2_ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout)cardPanel.getLayout();
card.show(cardPanel, CARD_2);
}
public static void main(String[] args) {
CardLayoutTest clt = new CardLayoutTest();
clt.pack();
clt.setLocationRelativeTo(null);
clt.setVisible(true);
}
}
您可能只是忘记添加
ActionListener
qu1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
qu1ActionPerformed(ev);
}
});
但是,如果我给你一个关于卡片布局工作原理的示例(然后调试你提交的部分代码),我会更快,我会尝试遵循你的代码风格(这是一个示例,而不是你的解决方案,所以我将其保留为至少2张卡片)
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class CardLayoutTest extends JFrame{
private static final long serialVersionUID = 1L;
final static String CARD_1 = "Card1";
final static String CARD_2 = "Card2";
private JPanel cardPanel;
public CardLayoutTest(){
super("CardLayoutTest");
initComponents();
}
private void initComponents() {
this.getContentPane().setLayout(new BorderLayout());
JButton btnCard1 = new JButton("Card1");
btnCard1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
btnCard1_ActionPerformed(ev);
}
});
JButton btnCard2 = new JButton("Card2");
btnCard2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ev) {
btnCard2_ActionPerformed(ev);
}
});
cardPanel = new JPanel(new CardLayout());
JPanel card1 = new JPanel();
card1.add(new JLabel("Card1"));
JPanel card2 = new JPanel();
card2.add(new JLabel("Card2"));
cardPanel.add(card1,CARD_1);
cardPanel.add(card2,CARD_2);
this.getContentPane().add(btnCard1,BorderLayout.NORTH);
this.getContentPane().add(btnCard2,BorderLayout.SOUTH);
this.getContentPane().add(cardPanel,BorderLayout.CENTER);
}
private void btnCard1_ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout)cardPanel.getLayout();
card.show(cardPanel, CARD_1);
}
private void btnCard2_ActionPerformed(java.awt.event.ActionEvent evt) {
CardLayout card = (CardLayout)cardPanel.getLayout();
card.show(cardPanel, CARD_2);
}
public static void main(String[] args) {
CardLayoutTest clt = new CardLayoutTest();
clt.pack();
clt.setLocationRelativeTo(null);
clt.setVisible(true);
}
}
这是你的全部代码吗?我不是在你为按钮设置ActionListener代码的地方。要更快地获得更好的帮助,请发布or。这是你的全部代码吗?我不是在你为按钮设置ActionListener代码的地方。要更快地获得更好的帮助,请发布or。