JAVA Swing GUI tips and howtos.
This example shows how to use a single filechooser to open and save. The filechooser will remember the directory it entered last which makes it a lot easier for the user. openFile and saveFile can be buttons or menu items with an ActionListener.
public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
if (source == openFile)
{
if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
try
{
File file = fileChooser.getSelectedFile(); //get file(path+name)
BufferedReader in = new BufferedReader (new FileReader(file));
//in.readLine() etc
}
catch (Exception e) { //ignore...
}
}
else { //user cancelled...
}
}
else if (source == saveFile)
{
if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
try
{
File file = fileChooser.getSelectedFile();
PrintWriter out = new PrintWriter(file);
//out.print() etc
out.close();
}
catch (Exception e) { //ignore...
}
}
else { //user cancelled...
}
}
Create the JPopupMenu and add JMenuItems to it (and ActionListeners to the items) like a normal JMenu. But instead of adding it to a menubar, wrap it in a class that implements MouseAdapter, and use addMouseListener() to add the listener to the item to popup over:
rightClickMeComponent.addMouseListener(new PopupListener(popupMenu))
You create the PopupListener class - it needs to call popupMenu.show() to show the popup when the events are right. This sample PopupListener is a slightly modified version of the one from The Java Tutorial:
public class PopupListener extends MouseAdapter
{
JPopupMenu popup;
PopupListener(JPopupMenu popupMenu)
{
popup = popupMenu;
}
public void mousePressed(MouseEvent e)
{
if (e.isPopupTrigger())
popup.show(e.getComponent(), e.getX(), e.getY());
}
public void mouseReleased(MouseEvent e)
{
if (e.isPopupTrigger())
popup.show(e.getComponent(), e.getX(), e.getY());
}
}