我创建了一个名为“Main”的类,每次运行它都会打开一个带有JMenuBar的窗口。然后我想点击“用户”,然后点击“学生”,然后它将打开我称为“用户”的另一个类。这是我写的代码
主:
public class Main extends JFrame{
Main(){
JFrame f = new JFrame("School Application");
JMenuItem xrhsths=new JMenuItem("Users");
JMenuItem Teachers=new JMenuItem("Teachers");
JMenuItem Students=new JMenuItem("Students");
JMenuItem Exit=new JMenuItem("Exit");
Exit.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
JMenuItem Lesson=new JMenuItem("Lessons");
JMenuItem Prerequisites=new JMenuItem("Prerequisites");
JMenuItem Teaching=new JMenuItem("Teaching");
JMenuItem Enrollment=new JMenuItem("Enrollment");
JMenuBar mb = new JMenuBar();
JMenu Persons=new JMenu("Persons");
JMenu Lessons=new JMenu("Lessons");
JMenu Assignements=new JMenu("Assignements");
JMenu Print=new JMenu("Print");
JMenu Help=new JMenu("Help");
JLabel background=new JLabel(new ImageIcon("C:\\Users\\Zoe\\Desktop\\Project\\icons\\teicrete.jpg"));
add(background);
mb.add(Persons);
mb.add(Lessons);
mb.add(Assignements);
mb.add(Print);
mb.add(Help);
Persons.add(xrhsths);
Persons.add(Teachers);
Persons.add(Students);
Persons.addSeparator();
Persons.add(Exit);
Lessons.add(Lesson);
Lessons.add(Prerequisites);
Assignements.add(Teaching);
Assignements.add(Enrollment);
f.add(mb);
f.add(background);
f.setJMenuBar(mb);
f.setVisible(true);
f.setSize(600,365);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setResizable(false);
}
public static void main(String[]args){
new Main();
}
}
用户:
public class Users extends JFrame {
public Users(){
initComponents();
}
public void initComponents(){
JFrame f= new JFrame("Users");
JMenuBar mb=new JMenuBar();
JMenu first = new JMenu();
first.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\first16.png"));
JMenu previous =new JMenu();
previous.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\previous16.png"));
JMenu next = new JMenu();
next.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\next16.png"));
JMenu last = new JMenu();
last.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\last16.png"));
JMenu add = new JMenu();
add.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\add16.png"));
JMenu cancel = new JMenu();
cancel.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\cancel16.png"));
JMenu ok = new JMenu();
ok.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\ok16.png"));
JMenu modify = new JMenu();
modify.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\modify16.png"));
JMenu delete = new JMenu();
delete.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\delete.png"));
JMenu refresh = new JMenu();
refresh.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\refresh16.png"));
JMenu search = new JMenu();
search.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\search16.png"));
JMenu replicate = new JMenu();
replicate.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\replicate16.png"));
JMenu table = new JMenu();
table.setIcon(new ImageIcon("C:\\Users\\Zoe\\Desktop\\JavaProject\\icons\\table16.png"));
mb.add(first);
mb.add(previous);
mb.add(next);
mb.add(last);
mb.add(add);
mb.add(cancel);
mb.add(ok);
mb.add(modify);
mb.add(delete);
mb.add(refresh);
mb.add(search);
mb.add(replicate);
mb.add(table);
JPanel p = new JPanel(new GridLayout(6,2));
p.setBorder(BorderFactory.createTitledBorder("Users"));
JLabel jl1= new JLabel("Serial");
jl1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JTextField tf1=new JTextField();
tf1.setEditable(false);
JLabel jl2 = new JLabel("Lastname");
jl2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JTextField tf2=new JTextField();
JLabel jl3 = new JLabel("Firstname");
jl3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JTextField tf5=new JTextField();
JLabel jl4 = new JLabel("Email");
jl4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JTextField tf3=new JTextField();
JLabel jl5 = new JLabel("Login");
jl5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JTextField tf4=new JTextField();
JLabel jl6 = new JLabel("Password");
jl6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JPasswordField pf = new JPasswordField();
p.add(jl1);
p.add(tf1);
p.add(jl2);
p.add(tf2);
p.add(jl3);
p.add(tf5);
p.add(jl4);
p.add(tf3);
p.add(jl5);
p.add(tf4);
p.add(jl6);
p.add(pf);
add(p);
pack();
f.add(mb);
f.setJMenuBar(mb);
f.add(p);
f.setVisible(true);
f.setSize(375,410);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
}
public static void main(String[]args){
new Users();
}}
我试图在main中添加一个actionListener,但它没有用。
xrhsths.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent t){
if(xrhsths.isSelected()){
Users userObject = new Users();
userObject.initComponents();
}
}
});
有没有人知道如何解决我的问题?
答案 0 :(得分:0)
你现在拥有什么:
xrhsths.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent t){
//gets there when clicked
if (xrhsths.isSelected()) {
//never gets there
//once you click, the menu is instantly closed, so it's not selected anymore
//remove this "if" statement
Users userObject = new Users();
userObject.initComponents();
}
}
});
这段代码就足够了:
xrhsths.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent t) {
Users userObject = new Users();
userObject.initComponents();
}
});