Java JButton和back按钮
我有一个Java JButton和back按钮,java,swing,jbutton,actionlistener,Java,Swing,Jbutton,Actionlistener,我有一个Actionlistener,它将我以前的面板更改为第二个面板,现在我想在panel2中放置一个“后退”按钮,将我带回到panel1以保持其图形设置 import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.J
Actionlistener
,它将我以前的面板更改为第二个面板,现在我想在panel2
中放置一个“后退”按钮,将我带回到panel1
以保持其图形设置
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
public static void main(String[] args){
final JFrame Main = new JFrame("TEST");
Main.setVisible(true);
Main.setSize(600, 600);
Main.setLocationRelativeTo(null);
Main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Adding JPanel
JPanel panel = new JPanel();
Main.add(panel);
//JPanel settings
panel.setLayout(null);
panel.setBackground(Color.GREEN);
//Adding JButton
JButton button = new JButton("Button 1");
JButton button2 = new JButton("Button2");
panel.add(button);
panel.add(button2);
//JButton settings
button.setBounds(70, 160, 200, 200);
button2.setBounds(320, 160, 200, 200);
//Button action
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JPanel panel2 = new JPanel();
//Panel2 settings
JButton button3 = new JButton("Back");
panel2.add(button3);
panel2.setBackground(Color.RED);
Main.getContentPane().removeAll();
Main.getContentPane().add(panel2);
Main.getContentPane().validate();
}
});
//Button action
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JPanel panel3 = new JPanel();
//Panel2 settings
JButton button3 = new JButton("Back");
panel3.add(button3);
panel3.setBackground(Color.YELLOW);
//Button action
button3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JPanel panel = new JPanel();
Main.getContentPane().removeAll();
Main.getContentPane().add(panel);
Main.getContentPane().validate();
}
});
Main.getContentPane().removeAll();
Main.getContentPane().add(panel3);
Main.getContentPane().validate();
}
});
}
}
1) 您已经描述了一个问题,但到目前为止还没有提出任何问题(更不用说具体的、可回答的问题了)。你的问题是什么?2) 对于一个空间中的多个组件,请使用如图所示的。3) 为了更快地获得更好的帮助,发布一个。不完全理解,但看看命令模式。它可能会帮助您实现后退和前进命令“维护其图形设置”是什么意思?您没有保持
JPanel
的上一个引用的完整性,而是使用JPanel panel=new JPanel()使用一个新对象重新初始化上一个引用代码>。因此,它的状态必然会改变CardLayout
正是您在这种情况下所需要的,正如前面所建议的。还有一个,谢谢你的帮助:-)相关,谢谢你的要求:-),尽管我仍然强烈要求你看看CardLayout
:-)我不能使用CardLayout,因为我想移动我的按钮并手动制作图形