java - 如何通过单击按钮在面板的同一区域显示不同的 JPanel

标签 java swing validation user-interface jpanel

我希望在按下按钮时显示不同的 JPanel。面板中显示的另外两个 JPanel 不移动。我试过了,但是当按下按钮时,没有任何反应。甚至多次按下按钮时,必须显示许多文本字段,否则就是一个简单的滚动 Pane 。这是代码:

最终的 JPanel choseTypeOfAnswer = new JPanel();

    choseTypeOfAnswer.add(radioBox);
    radioBox.setToolTipText("Answer in form of radiobox");
    radioBox.setIcon(GUI.createImageIcon("check.png"));          
    radioBox.setAlignmentX(Component.LEFT_ALIGNMENT);
    radioBox.setPreferredSize(new Dimension(30, 20));  
    radioBox.setVisible(true);
    radioBox.addActionListener(new ActionListener(){

        private int clicked;
        public void actionPerformed(ActionEvent e){
            clicked++;
            //reset contents of the image preview field
            if((clicked % 2) == 0){

            add(new JLabel("<html><b>Answer:</b>"));

            JTextField textField = new JTextField(20);
            JTextField textField1 = new JTextField(20);
            JTextField textField2 = new JTextField(20);
            JTextField textField3 = new JTextField(20);

            choseTypeOfAnswer.add(textField);
            choseTypeOfAnswer.add(textField1);
            choseTypeOfAnswer.add(textField2);
            choseTypeOfAnswer.add(textField3);

            add(BorderLayout.NORTH,choseTypeOfAnswer);
            }else{
            add(new JLabel("<html><b>Answer:</b>"));
            //now a scroll pane for the answer area
            JScrollPane answerScroller = new JScrollPane(answerArea);
            answerScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
            answerScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            choseTypeOfAnswer.add(answerScroller);
            //add(answerScroller);
            add(choseTypeOfAnswer);

            }
        }
        });//den emfanizei tpt me to patima tou koympiou

    add(choseTypeOfAnswer);

    //holds the bottom two components: "important" checkbox, "create card" button
    JPanel bottomContainer = new JPanel();
    //bottomContainer.setLayout(new BoxLayout(bottomContainer,BoxLayout.PAGE_AXIS));
    //important.setAlignmentX(Component.CENTER_ALIGNMENT);
    //bottomContainer.add(important);

    createCard.setText("Finish and add card");
    createCard.setIcon(GUI.createImageIcon("check.png"));          
    createCard.setAlignmentX(Component.CENTER_ALIGNMENT);
    createCard.setAlignmentY(Component.BOTTOM_ALIGNMENT);
    createCard.setPreferredSize(new Dimension(180, 45));           
    createCard.addActionListener(new cardListener());
    bottomContainer.add(createCard);

    //now add the bottom container
    add(bottomContainer, BorderLayout.SOUTH);

最佳答案

使用 Component#setVisible(...) 使一个面板可见,并隐藏另一个。

关于java - 如何通过单击按钮在面板的同一区域显示不同的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197682/

相关文章:

php - YII2 : two models form validation, 第二个模型需要依赖第一个模型输入

java - Android - 添加屏幕并在其中滑动

java - 边框布局未占用所有可用空间

ruby-on-rails - 在 Rails 4 中放置 Grape 自定义验证的位置

java - 我正在用 Java 制作一个带有 keyListener 的 Sprite Mover

java - 在 JPanel 中设置组件大小

java - GWT、Maven 和 AspectJ : RequestFactory validation for AOPed code?

java - 为什么 2010/08/15 与 M/d/yy 匹配?

java - 如何调试远程机器上的 war 文件?

java - JPanel 没有在 setSize 方法中设置大小