wie erzeuge ich ein Kontextmenü

newangel85

Grünschnabel
Hallo zusammmen,ich bin java neuling.
Ich hab ein Jlist inder elemente enthalten sind. Nun möchte ich das ich wenn ich ein Element selektiert habe und rechts klick durchführe ein kontextmenu aufgeht wo ich infos zu den element lesen kann.

ich hab leider kein plan wie ich das anstelle.
für hilfe wäre ich dankbar.
 
Moin!
Fuege deiner Komponente einen MouseListener hinzu.
Sobald die rechte Maustaste geklickt wird, zeigst du einfach ein Popup Menu mit dem gewünschten Inhalt an:
Ungefähr so:

Code:
yourList.addMouseListener(new MouseAdapter() {
        public void mouseReleased(MouseEvent evt) {
            if (evt.isPopupTrigger()) {
                showMenu(evt);
            }
        }
    });
public void showMenu(MouseEvent evt){
   JPopupMenu menu = new JPopupMenu();
   JMenuItem item = new JMenuItem(yourList.getSelectedItem().toString());
   item.addActionListener(yourActionListener);
   menu.add(item);
   menu.show(yourList, evt.getX(), evt.getY()); 
}

*grüssle*
MeinerEiner
 
er zeigt mir bei jList.addMouseListener(new MouseAdapter() ein fehler an das der identifier fehlt.

Code:
jList.addMouseListener(new MouseAdapter()
    {
      public void mouseReleased(MouseEvent evt)
      {
        if (evt.isPopupTrigger())
        {
          showMenu(evt);
        }
      }
    });
    public void showMenu(MouseEvent evt)
    {
      JPopupMenu jKontent = new JPopupMenu();
      JMenuItem jInfo = new JMenuItem(jList.getSelectedItem().toString());
      jInfo.addActionListener(yourActionListener);
      jKontent.add(jInfo);
      jKontent.show(jList, evt.getX(), evt.getY());
    }
 
Moin!
Code:
Info.addActionListener(yourActionListener);
Hast du denn einen ActionListener mit dem Namen yourActionListener? Falls nein, solltest du das vielleicht ändern...

*grüssle*
MeinerEiner
 
ok aber was schreib ich rein?

this? oder new actionlistener?
hab keine ahnung....


hab noch ein fehler in der Zeile

jList.addMouseListener(new MouseAdapter()

zeigt mir das identifier expectet..

danke für die hilfe
 
ok aber was schreib ich rein?

this? oder new actionlistener?
hab keine ahnung....
Du schreibst da das Objekt rein, welches das Interface ActionListener implementiert und darauf reagieren soll, wenn du auf das PopupMenu klickst..
Wenn du nicht verstehst, was ich da eben geschrieben haben, behaupte ich mal, das dir noch ein paar Grundlagen fehlen. Dann solltest du mal da schauen:
http://www.galileocomputing.de/open...14_004.htm#mj26989b07f26cff8fcd19bbc3d06f6855

hab noch ein fehler in der Zeile


jList.addMouseListener(new MouseAdapter()

zeigt mir das identifier expectet..
Der Code funktioniert bei mir einwandfrei. jList ist ein gültiges Objekt bei dir?
Ansonsten zeig mal den kompletten Code

*grüssle*
MeinerEiner
 
Zu so grundlegenden Fragen wie vorhin mit dem ActionListener, schau mal in den Link rein den ich gepostet hab. Das wird dir bei den meisten Sachen helfen.

MFG

zEriX
 
Code:
import com.gevas.config.AppGlobals;
import com.gevas.iniconfig.controller.IniConfigController;
import com.gevas.iniconfig.model.IniFile;
import java.awt.Toolkit;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

/**
 *
 * @author  Ritter
 */
public class JF_AppIniConfigurator extends javax.swing.JFrame
{
  
  private JD_AddConfig m_AddConfig = new JD_AddConfig(this,true);
  
  
  public JF_AppIniConfigurator()
  {
    initComponents();
    initComponentsExtra();
  }
  
  private void initComponentsExtra()
  {
    this.setTitle("AdminTool");
    this.setSize(550, 450);
    this.validate();
    AppGlobals.putInSchema("GUI", "Frame", this);
  }
  
  public void initData()
  {
    logoGevas();
    zentriertePosition();
    refresh();
  }
  
  //Firmenlogo wird eingfügt
  private void logoGevas()
  {
    jl_logo.setIcon(new ImageIcon("D:\\Projekte\\IHK\\AdminTool\\logo\\logo.JPG"));
    jl_logo.validate();
    jl_logo.repaint();
  }
  
  //zentriert den Frame
  private void zentriertePosition()
  {
    int  screen_w =  Toolkit.getDefaultToolkit().getScreenSize().width;
    int screen_h  = Toolkit.getDefaultToolkit().getScreenSize().height;
    int frame_w   = this.getWidth();
    int frame_h   = this.getHeight();
    
    int x = (screen_w - frame_w)/2;
    int y = (screen_h - frame_h)/2;
    
    setLocation(x,y);
  }
  
  /**
   * Füllt die Liste der GUI
   */
  private void addListFileName()
  {
    DefaultListModel m_listModel = new DefaultListModel();
    jList.setModel(m_listModel);
    ArrayList<IniFile> iniFileList = IniConfigController.getInstance().loadIniFiles();
    if(iniFileList.size()==0)
    {
      JOptionPane.showMessageDialog(this, "Liste ist leer, da keine IniFiles vorhanden sind", "Leere Liste", JOptionPane.INFORMATION_MESSAGE);
    }
    else
    {
      for(int i=0;i< iniFileList.size();i++)
      {
        IniFile iniFile = iniFileList.get(i);
        m_listModel.addElement(iniFile);
      }
    }
  }
  
  public void refresh()
  {
    addListFileName();
  }
  
  private void saveList()
  {
    ArrayList<IniFile> iniFileList  = new ArrayList<IniFile>();
    DefaultListModel listModel = (DefaultListModel)jList.getModel();
    for(int i=0; i<listModel.size(); i++)
    {
      IniFile file = (IniFile)listModel.getElementAt(i);
      String pfad = file.getPfad();
      String name = file.getName();
      iniFileList.add(new IniFile(name,pfad));
    }
    IniConfigController.getInstance().setIniFile(iniFileList);
  }

  //hier zeigt er ein Fehler an

  jList.addMouseListener(new MouseAdapter()  {
    public void mouseReleased(MouseEvent evt)
    {
      if (evt.isPopupTrigger())
      {
        showMenu(evt);
      }
    }
  });
  public void showMenu(MouseEvent evt)
  {
    JPopupMenu jKontext = new JPopupMenu();
    JMenuItem jInfo = new JMenuItem(jList.getSelectedValue().toString());
    jInfo.addActionListener(yourActionListener); ==> element was das ereignis auslöst?
    jKontext.add(jInfo);
    jKontext.show(jList, evt.getX(), evt.getY());
  }
 
Zurück