I'm hardly an expert, but have you tried programmatically "clicking" the menu item again after the JPanel is set visible? That might make it appear on top again. Worth a try anyway, although even if it works, there is probably a better solution. I ran into a similar problem but mine was because I was using netbeans and the panels actually overlapped on each other.
////// main , the frame /////// import java.text.MessageFormat; import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.print.*; public class TheFrame extends JFrame { private JPanel menuPanel; private JPanel text; private BorderLayout bl = new BorderLayout(); public TheFrame() { menuPanel = new MenuBar(this); menuPanel.setBackground(java.awt.Color.white); JLabel one = new JLabel("Java Final Project: Employee Record"); one.setAlignmentX(0.5f); one.setAlignmentY(1f); JLabel two = new JLabel("Written by Henry Li"); two.setAlignmentX(0.5f); two.setAlignmentY(1f); text = new JPanel(); text.setBackground(java.awt.Color.white); LayoutManager boxLayout = new BoxLayout(text, BoxLayout.Y_AXIS); text.setLayout(boxLayout); text.add(one); text.add(two); add(menuPanel, BorderLayout.NORTH); add(text, BorderLayout.CENTER); validate(); setBounds(400, 400, 600, 300); setVisible(true); } public static void main(String arg[]) throws SQLException { TheFrame frame = new TheFrame(); } }// end the Class TheFrame
// the menu class import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.print.*; public class MenuBar extends JPanel { private FlowLayout fl = new FlowLayout(); private JMenuBar menuBar; private JMenu menuFile, menuEdit; private JMenuItem closeMenuItem, printMenuItem, showTableMItem, addRecordMItem; private JFrame frame; private JScrollPane scrollPane; private JPanel panel; public MenuBar(JFrame theFrame) { this.frame = theFrame; menuFile = new JMenu("File"); // menu file menuFile.setForeground(java.awt.Color.black); closeMenuItem = new JMenuItem("Close"); // menu closeItem menuFile.add(closeMenuItem); // menu file with closeItem closeMenuItem.setAccelerator(KeyStroke.getKeyStroke('q', java.awt.Event.CTRL_MASK, false)); closeMenuItem.addActionListener(new closeMenuHandler()); printMenuItem = new JMenuItem("Print"); // menu printItem menuFile.add(printMenuItem); // menu file with printItem printMenuItem.setAccelerator(KeyStroke.getKeyStroke('p', java.awt.Event.CTRL_MASK, false)); ////////////// ActionListener ///////////// //***************************************************************************** //////////// Menu Bar Edit items ///////////////// menuEdit= new JMenu("Edit"); // menu edit showTableMItem = new JMenuItem("Show Table"); // showTable item menuEdit.add(showTableMItem); // menu edit with showTable item showTableMItem.addActionListener(new ShowTable(frame)); //***************************************************************************** addRecordMItem = new JMenuItem("Add Record"); // addRecord item menuEdit.add(addRecordMItem); // edit menu with addRecord item addRecordMItem.addActionListener(new AddRecord(frame)); /////////////////////////////////////// //////// Add all menu things to the menu bar ///////// menuBar = new JMenuBar(); // menu bar menuBar.setBackground(java.awt.Color.white); menuBar.add(menuFile); // menu bar with menu file menuBar.add(menuEdit); // menu bar with menu edit setLayout(fl); fl.setAlignment(FlowLayout.LEFT); add(menuBar); setVisible(true); }// end Constructor } class closeMenuHandler implements ActionListener { public void actionPerformed(ActionEvent ae) { System.exit(0); } }
/// and the Jpanel class which blocks my dropped down// import java.sql.*; import java.text.MessageFormat; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class AddRecord implements ActionListener { // DataHolder is another sql class to get all the data from mdb file private DataHolder dh = new DataHolder(); private JFrame frame; private JPanel panel; private JTextField idField, fnField, lnField, phoneField, addField, cityField, stateField, zipField, sexField, ageField, hourlyField, hoursField; private JButton saveButton, cancelButton; private int id, age; private String fn=null, ln=null, phone=null, add=null, city=null, state=null, zip=null, sex=null; private double hourly, hours; public AddRecord(JFrame frame) { this.frame = frame; GridLayout gl = new GridLayout(13,2); panel = new JPanel(); panel.setBackground(java.awt.Color.white); panel.setOpaque(false); panel.setLayout(gl); panel.setSize(500, 500); /////////// the labels and fields ////////////// panel.add(new Label("Employee Serial #:")); idField = new JTextField(); panel.add(idField); panel.add(new Label("First Name:")); fnField = new JTextField(); panel.add(fnField); panel.add(new Label("Last Name:")); lnField = new JTextField(); panel.add(lnField); panel.add(new Label("Telephone:")); phoneField = new JTextField(); panel.add(phoneField); panel.add(new Label("Address:")); addField = new JTextField(); panel.add(addField); panel.add(new Label("City:")); cityField = new JTextField(); panel.add(cityField); panel.add(new Label("State:")); stateField = new JTextField(); panel.add(stateField); panel.add(new Label("Zip Code:")); zipField = new JTextField(); panel.add(zipField); panel.add(new Label("Sex:")); sexField = new JTextField(); panel.add(sexField); panel.add(new Label("Age:")); ageField = new JTextField(); panel.add(ageField); panel.add(new Label("Hourly Rate:")); hourlyField = new JTextField(); panel.add(hourlyField); panel.add(new Label("Hours per week:")); hoursField = new JTextField(); panel.add(hoursField); ////////////// the Labels and Fields //////////////////// saveButton = new JButton("Save"); saveButton.addActionListener(this); panel.add(saveButton); cancelButton = new JButton("Cancel"); cancelButton.addActionListener(this); panel.add(cancelButton); //panel.setOpaque(false); }// end AddRecord Constructor public void actionPerformed(ActionEvent e) { boolean status= true; frame.getContentPane().remove(1); frame.add(panel); frame.setBounds(400, 400, 500, 300); frame.setVisible(true); frame.repaint(); //////////////////// another action perform //////////////////// if(e.getSource() == saveButton) { if(idField.getText().equals("")) { JOptionPane.showMessageDialog(null, "Employee ID must be entered!"); status=false; } else { id = new Integer(idField.getText()); fn = fnField.getText(); ln = lnField.getText(); phone = phoneField.getText(); add = addField.getText(); city= cityField.getText(); state = stateField.getText(); zip = zipField.getText(); sex = sexField.getText(); if(ageField.getText().equals("")) { age=0; } else { age = new Integer(ageField.getText()); } if(hourlyField.getText().equals("")) { hourly= 0; } else { hourly = new Double(hourlyField.getText()); } if(hoursField.getText().equals("")) { hours=0; } else { hours = new Double(hoursField.getText()); } }// end idField has something //fieldReset(); idField.setText(""); fnField.setText(""); lnField.setText(""); phoneField.setText(""); addField.setText(""); cityField.setText(""); stateField.setText(""); zipField.setText(""); sexField.setText(""); ageField.setText(""); hourlyField.setText(""); hoursField.setText(""); idField.requestFocus(); if(status == true) { dh.addRecord(id, fn, ln, phone, add, city, state, zip, age, sex, hourly, hours); JOptionPane.showMessageDialog(null, "The new record has been saved!"); } }// ENN SAVE BUTTON else if(e.getSource()== cancelButton) { frame.remove(panel); } /////////////// end of another action perform ///////////////////// } // end ActionPerformed method }// end class
////// main , the frame /////// import java.text.MessageFormat; import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.print.*; public class TheFrame extends JFrame { private JPanel menuPanel; private JPanel text; private BorderLayout bl = new BorderLayout(); public TheFrame() { JLabel one = new JLabel("Java Final Project: Employee Record"); one.setAlignmentX(0.5f); one.setAlignmentY(1f); JLabel two = new JLabel("Written by Henry Li"); two.setAlignmentX(0.5f); two.setAlignmentY(1f); text = new JPanel(); text.setBackground(java.awt.Color.white); LayoutManager boxLayout = new BoxLayout(text, BoxLayout.Y_AXIS); text.setLayout(boxLayout); text.add(one); text.add(two); // add the menu createMenu(); // set close op also setDefaultCloseOperation(EXIT_ON_CLOSE); // don't need // add(menuPanel, BorderLayout.NORTH); getContentPane().add(text, BorderLayout.CENTER); validate(); setBounds(400, 400, 600, 300); setVisible(true); } // Moved everything from menu panel here private void createMenu(){ JMenuBar menuBar; JMenu menuFile, menuEdit; JMenuItem closeMenuItem, printMenuItem, showTableMItem, addRecordMItem; menuFile = new JMenu("File"); // menu file menuFile.setForeground(java.awt.Color.black); closeMenuItem = new JMenuItem("Close"); // menu closeItem menuFile.add(closeMenuItem); // menu file with closeItem closeMenuItem.setAccelerator(KeyStroke.getKeyStroke('q', java.awt.Event.CTRL_MASK, false)); closeMenuItem.addActionListener(new closeMenuHandler()); printMenuItem = new JMenuItem("Print"); // menu printItem menuFile.add(printMenuItem); // menu file with printItem printMenuItem.setAccelerator(KeyStroke.getKeyStroke('p', java.awt.Event.CTRL_MASK, false)); ////////////// ActionListener ///////////// //***************************************************************************** //////////// Menu Bar Edit items ///////////////// menuEdit= new JMenu("Edit"); // menu edit showTableMItem = new JMenuItem("Show Table"); // showTable item menuEdit.add(showTableMItem); // menu edit with showTable item // I didn't have this class - you'll want to re-enable this I imagine // showTableMItem.addActionListener(new ShowTable(frame)); //***************************************************************************** addRecordMItem = new JMenuItem("Add Record"); // addRecord item menuEdit.add(addRecordMItem); // edit menu with addRecord item addRecordMItem.addActionListener(new AddRecord(this)); /////////////////////////////////////// //////// Add all menu things to the menu bar ///////// menuBar = new JMenuBar(); // menu bar menuBar.setBackground(java.awt.Color.white); menuBar.add(menuFile); // menu bar with menu file menuBar.add(menuEdit); // menu bar with menu edit // set this as the frame's menu setJMenuBar(menuBar); } public static void main(String arg[]) throws SQLException { TheFrame frame = new TheFrame(); } }// end the Class TheFrame // removed this entirely class MenuBar extends JPanel {} class closeMenuHandler implements ActionListener { public void actionPerformed(ActionEvent ae) { System.exit(0); } } /// and the Jpanel class which blocks my dropped down// class AddRecord implements ActionListener { // didn't have this class // DataHolder is another sql class to get all the data from mdb file // private DataHolder dh = new DataHolder(); private JFrame frame; private JPanel panel; private JTextField idField, fnField, lnField, phoneField, addField, cityField, stateField, zipField, sexField, ageField, hourlyField, hoursField; private JButton saveButton, cancelButton; private int id, age; private String fn=null, ln=null, phone=null, add=null, city=null, state=null, zip=null, sex=null; private double hourly, hours; public AddRecord(JFrame frame) { this.frame = frame; GridLayout gl = new GridLayout(13,2); panel = new JPanel(); panel.setBackground(java.awt.Color.white); // panel.setOpaque(false); // no need panel.setLayout(gl); panel.setSize(500, 500); /////////// the labels and fields ////////////// // NOTE THE JLabel CHANGE panel.add(new JLabel("Employee Serial #:")); idField = new JTextField(); panel.add(idField); panel.add(new JLabel("First Name:")); fnField = new JTextField(); panel.add(fnField); panel.add(new JLabel("Last Name:")); lnField = new JTextField(); panel.add(lnField); panel.add(new JLabel("Telephone:")); phoneField = new JTextField(); panel.add(phoneField); panel.add(new JLabel("Address:")); addField = new JTextField(); panel.add(addField); panel.add(new JLabel("City:")); cityField = new JTextField(); panel.add(cityField); panel.add(new JLabel("State:")); stateField = new JTextField(); panel.add(stateField); panel.add(new JLabel("Zip Code:")); zipField = new JTextField(); panel.add(zipField); panel.add(new JLabel("Sex:")); sexField = new JTextField(); panel.add(sexField); panel.add(new JLabel("Age:")); ageField = new JTextField(); panel.add(ageField); panel.add(new JLabel("Hourly Rate:")); hourlyField = new JTextField(); panel.add(hourlyField); panel.add(new JLabel("Hours per week:")); hoursField = new JTextField(); panel.add(hoursField); ////////////// the Labels and Fields //////////////////// saveButton = new JButton("Save"); saveButton.addActionListener(this); panel.add(saveButton); cancelButton = new JButton("Cancel"); cancelButton.addActionListener(this); panel.add(cancelButton); //panel.setOpaque(false); }// end AddRecord Constructor public void actionPerformed(ActionEvent e) { boolean status= true; // add components to content pane frame.getContentPane().removeAll(); frame.getContentPane().add(panel); frame.setBounds(400, 400, 500, 300); frame.pack(); frame.repaint(); //////////////////// another action perform //////////////////// if(e.getSource() == saveButton) { if(idField.getText().equals("")) { JOptionPane.showMessageDialog(null, "Employee ID must be entered!"); status=false; } else { id = new Integer(idField.getText()); fn = fnField.getText(); ln = lnField.getText(); phone = phoneField.getText(); add = addField.getText(); city= cityField.getText(); state = stateField.getText(); zip = zipField.getText(); sex = sexField.getText(); if(ageField.getText().equals("")) { age=0; } else { age = new Integer(ageField.getText()); } if(hourlyField.getText().equals("")) { hourly= 0; } else { hourly = new Double(hourlyField.getText()); } if(hoursField.getText().equals("")) { hours=0; } else { hours = new Double(hoursField.getText()); } }// end idField has something //fieldReset(); idField.setText(""); fnField.setText(""); lnField.setText(""); phoneField.setText(""); addField.setText(""); cityField.setText(""); stateField.setText(""); zipField.setText(""); sexField.setText(""); ageField.setText(""); hourlyField.setText(""); hoursField.setText(""); idField.requestFocus(); if(status == true) { // dh.addRecord(id, fn, ln, phone, add, city, state, zip, age, sex, hourly, hours); JOptionPane.showMessageDialog(null, "The new record has been saved!"); } }// ENN SAVE BUTTON else if(e.getSource()== cancelButton) { frame.remove(panel); } /////////////// end of another action perform ///////////////////// } // end ActionPerformed method }// end class
| DaniWeb Message | |
| Cancel Changes | |