程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel??

开发过程中遇到如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?的解决方法建议,希望对你解决如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?有所启发或帮助;

从容器中取出组件后,它进入该invalIDate状态。把它带回来给valID你要的状态revalIDaterepaint那个。在您的情况下,您将直接从中添加/删除组件,JFrame具体取决于Java版本,您可以这样做:

frame.revalIDate(); // For Java 1.7 or above
frame.getContentPane().valIDate(); // For Java 1.6 or below
frame.repaint();

这是一个可以帮助您的工作示例:

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

public class Assignment
{
    private JFrame frame;
    private JPanel firstPanel;
    private JPanel secondPanel;

    private Jbutton forWARDbutton;
    private Jbutton BACkbutton;

    private voID displayGUI()
    {
        frame = new JFrame("Assignment");
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

        firstPanel = new JPanel();
        firstPanel.setopaque(true);
        firstPanel.setBACkground(color.bLUE);

        secondPanel = new JPanel();
        secondPanel.setopaque(true);
        secondPanel.setBACkground(color.RED);

        forWARDbutton = new Jbutton("ForWARD");
        forWARDbutton.addActionListener(new ActionListener()
        {
            @OverrIDe
            public voID actionPerformed(ActionEvent aE)
            {
                frame.remove(firstPanel);
                frame.add(secondPanel);
                frame.revalIDate(); // For Java 1.7 or above.
                // frame.getContentPane().valIDate(); // For Java 1.6 or below.
                frame.repaint();
            }
        });

        BACkbutton = new Jbutton("BACk");
        BACkbutton.addActionListener(new ActionListener()
        {
            @OverrIDe
            public voID actionPerformed(ActionEvent aE)
            {
                frame.remove(secondPanel);
                frame.add(firstPanel);
                frame.revalIDate(); // For Java 1.7 or above.
                // frame.getContentPane().valIDate(); // For Java 1.6 or below.
                frame.repaint();
            }
        });

        firstPanel.add(forWARDbutton);
        secondPanel.add(BACkbutton);

        frame.add(firstPanel);
        frame.setSize(300, 300);
        frame.setLOCATIOnByPlatform(true);
        frame.setVisible(true);
    }

    public static voID main(String... args)
    {
        SwingUtilitIEs.invokelater(new Runnable()
        {
            @OverrIDe
            public voID run()
            {
                new Assignment().displayGUI();
            }
        });
    }
}

解决方法

不幸的是,我必须在该程序中使用多个窗口,而且我认为CardLayout不能正常工作,因为在不同布局之间我无法保持任何按钮不变。因此,我尝试编写一个按钮以隐藏当前的JPanel(thePanel)并显示一个新的JPanel(thePlacebo)。

我试图在这样的ActionListener中隐藏thePanel:

frame.getContentPane().remove(thePanel);

我以为这可以用,但是只要按一下按钮,它就会冻结程序。

这是上下文代码的一部分:

public class Reflexology1 extends JFrame{
JButton button1,button2;
JButton movingButton;
JTextArea textArea1;
int buttonAClicked,buttonDClicked;
private long _openTime = 0;
private long _closeTime = 0;
JPanel thePanel = new JPanel();
JPanel thePlacebo = new JPanel();
final JFrame frame = new JFrame("Reflexology");

public static void main(String[] args){
    new Reflexology1();
}

public Reflexology1(){


    frame.setSize(600,475);
    frame.setLOCATIOnRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.settitle("Reflexology 1.0");
    frame.setResizable(false);


    button1 = new JButton("Accept");
    button2 = new JButton("Decline");
    movingButton = new JButton("Click Me");

    ListenFOracceptButton lForAButton = new ListenFOracceptButton();
    ListenForDeclineButton lForDButton = new ListenForDeclineButton();
    button1.addActionListener(lForAButton);
    button2.addActionListener(lForDButton);
    //movingButton.addActionListener(lForMButton);

    JTextArea textArea1 = new JTextArea(24,50);

    textArea1.setText("Tracking Events\n");
    textArea1.setLineWrap(true);
    textArea1.setWrapStyleWord(true);
    textArea1.setSize(15,50);

    FileReader reader = null;
    try {
        reader = new FileReader("EULA.txt");
        textArea1.read(reader,"EULA.txt");
    } catch (IOException exception) {
        System.err.println("Problem loading file");
        exception.printStackTrace();
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException exception) {
                System.err.println("Error closing reader");
                exception.printStackTrace();
            }
        }
    }

    JScrollPane scrollBar1 = new JScrollPane(textArea1,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    AdjustmentListener listener = new MyAdjustmentListener();

    thePanel.add(scrollBar1);
    thePanel.add(button1);
    thePanel.add(button2);
    thePlacebo.add(movingButton);

    frame.add(thePanel);

    ListenForWindow lForWindow = new ListenForWindow();
    frame.addWindowListener(lForWindow);
    frame.setVisible(true);

}
// Implement listeners

private class ListenFOracceptButton implements ActionListener{
    public void actionPerformed(ActionEvent E){
        if (e.getsource() == button1){
            Calendar ClCdatetiR_227_11845@e = Calendar.geTinstance();
            System.out.println(ClCdatetiR_227_11845@e.getTimeInMillis() - _openTimE);
            _closeTime = ClCdatetiR_227_11845@e.getTimeInMillis() - _openTime;
            frame.getContentPane().remove(thePanel);
        }
    }
}

有人知道我可能做错了吗?

大佬总结

以上是大佬教程为你收集整理的如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?全部内容,希望文章能够帮你解决如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。