首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试将使用CardLayout的CardLayout添加到JFrame

尝试将使用CardLayout的CardLayout添加到JFrame
EN

Stack Overflow用户
提问于 2015-01-22 15:49:22
回答 1查看 381关注 0票数 1

我找不到错误,当我跑的时候,我得到了一个空白框

我正在尝试制作一个applet,您看到的第一个屏幕包含4个按钮,每个排序算法我必须实现一个按钮,然后一旦单击按钮,它就会带您到一个新面板,该面板具有数组排序的图形表示(我已经在一个较小的applet中这样做了)。

这是我的代码:

代码语言:javascript
复制
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class newCLayoutTest extends JPanel{

    private JPanel holderPanel, mainPanel, bubblePanel, selectionPanel, mergePanel, quickPanel;
    private JButton bubbleButton, selectionButton, mergeButton, quickButton;

    private CardLayout cardLayout = new CardLayout();

    public newCLayoutTest()
    {
        JLabel label = new JLabel("Label");
        holderPanel = new JPanel();
        mainPanel = new JPanel();
        bubblePanel = new JPanel();
        selectionPanel = new JPanel();
        mergePanel = new JPanel();
        quickPanel = new JPanel();

        holderPanel.setLayout(cardLayout);

        bubbleButton = new JButton();
        selectionButton = new JButton();
        mergeButton = new JButton();
        quickButton = new JButton();

        //mainPanel.setLayout(new GridLayout(2,2));
        mainPanel.add(bubbleButton);
        mainPanel.add(selectionButton);
        mainPanel.add(mergeButton);
        mainPanel.add(quickButton);

        bubblePanel.add(label);

        holderPanel.add(mainPanel, "1");
        holderPanel.add(bubblePanel, "2");

        cardLayout.show(holderPanel,"2");




    }

}

控制器类:

代码语言:javascript
复制
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class testControl extends JFrame{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable() {


        public void run() {

            newCLayoutTest panel = new newCLayoutTest();
            JFrame frame = new JFrame("LET THIS WORK");

        //  frame.setLayout(new BorderLayout());

            frame.add(panel);
            //frame.getContentPane().add(panel);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            frame.setSize(600, 400);
            frame.setVisible(true);
        }
    });
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-22 15:54:37

holderPanel尚未添加到包含组件的面板中,即newCLayoutTest

代码语言:javascript
复制
add(holderPanel);

注意,没有必要对JPanel进行子类,因为您没有向面板添加任何新功能。您可以简单地创建一个面板并添加组件。还遵循Java命名约定,即对类名使用大写首字母,例如NewCLayoutTest

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28093014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档