Miten saan popup-valikon näkymään oikein? Nyt koodissa on tämä:
public class JPanel extends javax.swing.JPanel // 3. virheilmoitus { private JPopupMenu popup; { initComponents(); } private void initComponents() { addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { formMousePressed(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { formMouseReleased(evt); // 4. virheilmoitus } }); private void formMouseReleased(java.awt.event.MouseEvent evt) { showPopup(evt); // 2. virheilmoitus } private void formMousePressed(java.awt.event.MouseEvent evt) { showPopup(evt); } private void showPopup(MouseEvent evt) { if (evt.isPopupTrigger()) { popup.show(evt.getComponent(), evt.getX(), evt.getY());//1. virheilmoitus } }
Mod. lisäsi kooditagit
sypress kirjoitti:
Miten saan popup-valikon näkymään oikein? Nyt koodissa on tämä:
private JPopupMenu popup; { initComponents(); }
Tässä ensin luot jäsenmuuttujan popup, ja sitten jonkun lohkon, jolla ei ole mitään nimeä. Sen ilmeisesti pitäis olla konstruktori, eli
private JPopupMenu popup; public JPanel() { initComponents(); }
sypress kirjoitti:
private void initComponents() {
Tämän metodin lopettava aaltosulku puuttuu.
Lisäks lopusta puuttuu vielä luokan määrittelyn lopettava aaltosulku.
On ne siellä, jäi vain tosta pois. En vaan ymmärrä mistä se nuo virheilmotukset vetää... ? ! ?
Mitkä virheilmoitukset? Virheilmoitukset ovat yleensä suhteellisen selkokielisiä. Suosittelen tuomaan nuo paketit koodin alussa sen sijaan, että viittaat suoraan luokkiin pakettien sisältä. Yhestä viittauksesta puuttuu paketin nimi.
tsuriga kirjoitti:
Yhestä viittauksesta puuttuu paketin nimi.
Mistä niistä?
MouseEventistä (silmä kätteen).
No höh! Kiitti!
Paitsi ettei se vieläkään toimi, tällanen virheilmotus tulee:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
tuossa MouseReleasedissa taitaa olla jotain väärin
Vaikuttaisi siltä että popup osoittaa nulliin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.