栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

CardLayout的先前功能不起作用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CardLayout的先前功能不起作用?

一旦向

start
面板中添加了一些其他组件,我就不会遇到问题(与您的代码无关)。

但是,您会遇到问题,因为您已将按钮添加到面板中,该按钮已显示在中

CardLayout

更好的解决方案是将按钮放在主屏幕的底部,并将其与卡分开。

您将需要维护某种计数器或对当前页面的引用,因为

CardLayout
它没有提供任何方式来获取对当前卡的引用。这将允许您适当地启用/禁用下一个/上一个按钮…

更新为可运行示例…

import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.EventQueue;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;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;import javax.swing.JTextField;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;public class MakeAQuiz {    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     try {         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());     } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {     }     new MakeAQuiz(); }        });    }    private JPanel start, base, fields, buttonz, question;    private String[] labels = {"Enter your question: ", "Answer 1: ", "Answer 2: ", "Answer 3: ", "Answer 4: "};    private JButton[] buttons = {new JButton("<<Go back"), new JButton("I'm done"), new JButton("Next>>")};    private Jframe makeframe;    public MakeAQuiz() {        start = new JPanel(new CardLayout());        start.add(makePanel(), "1");        makeframe = new Jframe();        makeframe.add(start);        buttonz = new JPanel(new FlowLayout());        final CardLayout layout = (CardLayout) start.getLayout();        buttons[1].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) {     buttons[0].setEnabled(false);     buttons[2].setEnabled(false); }        });        buttons[2].addActionListener(new ActionListener() {      @Override public void actionPerformed(ActionEvent e) {     int count = start.getComponentCount();     start.add(new JLabel(Integer.toString(count), JLabel.CENTER), Integer.toString(count));     layout.next(start); }        });        buttons[0].addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) {     layout.previous(start); }        });        buttonz.add(buttons[0]);        buttonz.add(buttons[1]);        buttonz.add(buttons[2]);        makeframe.add(buttonz, BorderLayout.SOUTH);        makeframe.pack();        makeframe.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        makeframe.setVisible(true);    }    public Jframe getJframe() {        return makeframe;    }    public JPanel makePanel() {        question = new JPanel(new FlowLayout());        fields = new JPanel(new GridBagLayout());        base = new JPanel(new BorderLayout());        GridBagConstraints c = new GridBagConstraints();        c.weighty = 0.5; //adds padding between the fields vertically        for (int i = 1; i < 5; i++) { c.gridy++; //puts each field in a seperate line/row JLabel label = new JLabel(labels[i]);// c.fill = GridBagConstraints.HORIZONTAL; fields.add(label, c); JTextField textField = new JTextField(20); fields.add(textField, c);        }        JLabel l = new JLabel(labels[0]);        JTextField t = new JTextField(30);        question.add(l);        question.add(t);        base.add(question, BorderLayout.NORTH);        base.add(fields, BorderLayout.CENTER);        return base;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号