大佬教程收集整理的这篇文章主要介绍了如何隐藏当前的JPanel并使用Java中的按钮显示一个新的JPanel?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
从容器中取出组件后,它进入该invalIDate
状态。把它带回来给valID
你要的状态revalIDate
和repaint
那个。在您的情况下,您将直接从中添加/删除组件,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,请注明来意。