我一直在寻找几个小时,但仍然没有找到我需要的东西,也没有任何教程/帮助指南/论坛为我指明正确的方向。
我有两个单独的类,我需要实现一个动作监听器。我可以从另一个班级去一个班级,但无法找到回到主班的方法。主类使用 aCardLayout
来显示第二类。
是否有任何好的教程,或者任何可以帮助/提出建议来解决我的这个问题的教程?谢谢
我最终得到了什么:
主要课程 -
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyGui extends JFrame {
//CardLayout
static CardLayout cardLayout;
static JPanel cards = new JPanel();
private void actionPerformed(ActionEvent evt) {
String cmd = evt.getActionCommand();
if(cmd.equals("HOME")) {
cardLayout.show(cards, "Main GUI");
}
}
//main Panel
JPanel mainP = new JPanel();
//north panel
TitleBar tb = new TitleBar();
JPanel top = new JPanel();
//JLabel title = new JLabel("Title Bar", JLabel.CENTER);
//center panel
JButton widgetBox = new JButton("<-- Touch Screen Widget Area -->");
//east panel
JPanel east = new JPanel();
JPanel picPanel = new JPanel(new GridLayout(1,1));
JButton pic = new JButton("Pic goes here");
JPanel settingsPanel = new JPanel(new GridLayout(1,2));
JButton appButton = new JButton("Apps");
JButton settingButton = new JButton("Settings");
//south panel
JPanel south = new JPanel();
JTextField rssFeed = new JTextField("RSS FEED");
//gui panels
MyGui2 widgPanel;
MyGui3 appPanel;
MyGui4 setPanel;
public MyGui() {
//main layout
super();
BorderLayout main = new BorderLayout();
mainP.setLayout(main);
//gui init
widgPanel = new MyGui2();
appPanel = new MyGui3();
setPanel = new MyGui4();
//CardLayout
final JFrame frame = new JFrame();
JPanel contentPane = (JPanel) frame.getContentPane();
cards.setLayout(cardLayout = new CardLayout());
cards.add("Main GUI", mainP);
cards.add("Settings GUI", setPanel);
cards.add("App GUI", appPanel);
cards.add("Widget GUI", widgPanel);
cardLayout.show(cards, "Main GUI");
contentPane.add(cards);
//north panel
BorderLayout header = new BorderLayout();
top.setLayout(header);
top.add(tb);
mainP.add(top, BorderLayout.NORTH);
//center panel
widgetBox.setEnabled(true);
widgetBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();
if(source == widgetBox) {
frame.setSize(325, 500);
cardLayout.show(cards, "Widget GUI");
}
}
});
mainP.add(widgetBox, BorderLayout.CENTER);
//east panel
BoxLayout eastPanel = new BoxLayout(east, BoxLayout.Y_AXIS);
east.setLayout(eastPanel);
picPanel.add(pic);
pic.setEnabled(false);
pic.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
rssFeed.setText("Add Picture");
}
}
);
picPanel.setPreferredSize(new Dimension(175, 150));
//app button action
settingsPanel.add(appButton);
appButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
//appPane
Object source = evt.getSource();
if(source == appButton) {
cardLayout.show(cards, "App GUI");
}
}
});
//settings button action
settingsPanel.add(settingButton);
settingButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
//setPane
Object source = evt.getSource();
if(source == settingButton) {
cardLayout.show(cards, "Settings GUI");
}
}
});
east.add(picPanel);
east.add(settingsPanel);
mainP.add(east, BorderLayout.EAST);
//south panel
BorderLayout footer = new BorderLayout();
south.setLayout(footer);
south.add(rssFeed);
rssFeed.setEditable(false);
rssFeed.setHorizontalAlignment(JTextField.CENTER);
mainP.add(south, BorderLayout.SOUTH);
//setLookAndFeel();
frame.setResizable(false);
frame.setSize(500, 325);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private void setLookAndFeel() {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException exc) {
//ignore error
}
}
public static void main(String[] args) {
MyGui gui = new MyGui();
}
}
二等——
bottom.setLayout(footer);
bottom.add(homeButton);
//home button action
homeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
System.out.println("Go Back Home");
}
});