java jpanel隐藏_如何隐藏当前的JPanel并使用Java中的按钮显示新的JPanel?

这篇博客讨论了在Java Swing应用中遇到的问题,即尝试通过按钮点击事件切换JPanel时程序冻结。作者创建了两个JPanel(thePanel和thePlacebo),并在ActionListener中尝试移除thePanel并显示thePlacebo,但操作导致了程序挂起。博客内容涉及到窗口监听器、布局管理和组件添加等Swing编程概念。
摘要由CSDN通过智能技术生成

不幸的是,我不得不在这个程序中使用多个窗口,我不认为CardLayout会起作用,因为我不能在不同的布局之间保持任何按钮不变.所以我试图编写一个按钮来隐藏当前的JPanel(thePanel)并显示一个新的(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 ClCDateTime = Calendar.getInstance();

System.out.println(ClCDateTime.getTimeInMillis() - _openTime);

_closeTime = ClCDateTime.getTimeInMillis() - _openTime;

frame.getContentPane().remove(thePanel);

}

}

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值