Java 使用swing进行KET测试项目的导航

Java 使用swing进行KET测试项目的导航,java,swing,testing,navigation,Java,Swing,Testing,Navigation,我正在为这个测试项目收集资料。但真正困扰我的是这个页面导航,我不知道如何让它正常工作。我正在尝试使用CardsLayout。但它不能正常工作。我需要帮助如何设置这些窗格 在底部,我需要填写问题编号,首先我想我只会填写5个。当按下数字时,它将导航到由该数字标记的页面。“下一步”和“上一步”按钮导航+-一页,“结果”按钮进入最后一页,在该页中测试被汇总 看看下面给出的代码。它是设置和处理卡片布局的非常基本的程序,非常符合您所寻找的要求。我希望它能帮助您更好地理解CardLayout的使用和处理 im

我正在为这个测试项目收集资料。但真正困扰我的是这个页面导航,我不知道如何让它正常工作。我正在尝试使用CardsLayout。但它不能正常工作。我需要帮助如何设置这些窗格

在底部,我需要填写问题编号,首先我想我只会填写5个。当按下数字时,它将导航到由该数字标记的页面。“下一步”和“上一步”按钮导航+-一页,“结果”按钮进入最后一页,在该页中测试被汇总


看看下面给出的代码。它是设置和处理
卡片布局的非常基本的程序,非常符合您所寻找的要求。我希望它能帮助您更好地理解
CardLayout
的使用和处理

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class CardLayoutDemo extends JFrame implements ActionListener
{
    JButton next;
    JButton prev;
    JButton[] buttons ;
    JPanel[]  cards;
    JPanel    centerPanel;//Going to add all cards
    JPanel lowerPanel;
    int currentButton = 0;
    public void prepareAndShowGUI() 
    {
        next      = new JButton("Next>>");
        prev      = new JButton("<<Previous");
        buttons   = new JButton[10];
        String[]  cardsName = {"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN"};
        cards     = new JPanel[10];
        centerPanel= new JPanel();
        lowerPanel = new JPanel();
        centerPanel.setLayout(new CardLayout());
        for (int i = 0; i < buttons.length ; i++ )
        {
            buttons[i] = new JButton(cardsName[i]);
            buttons[i].addActionListener(this);
            buttons[i].setActionCommand("CARDS"+i);
            lowerPanel.add(buttons[i]);
            cards[i] = new JPanel();
            cards[i].setLayout(new BorderLayout());
            cards[i].setBorder(BorderFactory.createTitledBorder("Card "+(i+1)));
            cards[i].add(new JLabel(cardsName[i], SwingUtilities.CENTER));
            centerPanel.add(cards[i], cardsName[i]);
        }
        getContentPane().add(centerPanel);
        getContentPane().add(lowerPanel,BorderLayout.SOUTH);
        getContentPane().add(next,BorderLayout.EAST);
        getContentPane().add(prev,BorderLayout.WEST);
        next.addActionListener(this);
        prev.addActionListener(this);
        prev.setEnabled(false);
        if (buttons.length == 1)
        {
            next.setEnabled(false);
        }
        setSize(700,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent evt) 
    {
        JButton clickedButton = (JButton)evt.getSource();
        String command  = clickedButton.getActionCommand();
        if (command.startsWith("CARDS"))
        {
            CardLayout cl = (CardLayout)(centerPanel.getLayout());
            cl.show(centerPanel, clickedButton.getText());
            currentButton = Integer.parseInt(command.substring("CARDS".length()));
            if (currentButton == 0)
            {
                prev.setEnabled(false);
                if (buttons.length > 1)
                {
                    next.setEnabled(true);
                }
            }
            else if (currentButton == buttons.length - 1)
            {
                next.setEnabled(false);
                if (buttons.length > 1)
                {
                    prev.setEnabled(true);
                }
            }
            else
            {
                if (buttons.length > 1)
                {
                    next.setEnabled(true);
                    prev.setEnabled(true);
                }
            }
        }
        else
        {
            if ("Next>>".equals(clickedButton.getText()))
            {
                buttons[++currentButton].doClick();
                if (currentButton == buttons.length - 1)
                {
                    next.setEnabled(false);
                    prev.requestFocus();
                }
                prev.setEnabled(true);
            }
            else if ("<<Previous".equals(clickedButton.getText()))
            {
                buttons[--currentButton].doClick();
                if (currentButton == 0)
                {
                    prev.setEnabled(false);
                    next.requestFocus();
                }
                next.setEnabled(true);
            }
        }

    }     
    public static void main(String[] args) 
    {
        SwingUtilities.invokeLater(new Runnable() 
        {
            public void run() 
            {
                CardLayoutDemo cld = new CardLayoutDemo();
                cld.prepareAndShowGUI();
            }
        });
    }
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入javax.swing.border.*;
公共类CardLayoutDemo扩展JFrame实现ActionListener
{
下一个按钮;
JButton prev;
JButton[]按钮;
JPanel[]卡;
JPanel centerPanel;//将添加所有卡
JPanel-lowerPanel;
int currentButton=0;
公共作废预处理显示GUI()
{
下一步=新的JButton(“下一步>>”);
prev=newjbutton(“>”).equals(clickedButton.getText())
{
按钮[++currentButton].doClick();
如果(currentButton==buttons.length-1)
{
next.setEnabled(false);
prev.requestFocus();
}
上一设置启用(真);
}

否则,如果(“一个
JTabbedPane
不是更容易吗?你不必处理卡片交换等…在JTabbedPane上实现上一个/下一个是很简单的。你可以使用
setTabPlacement(JTabbedPane.BOTTOM)
将选项卡移动到图片中的底部。我认为您需要提供一些示例代码,以便我们能够真正帮助您