Pereiti prie turinio

JAVA.MouseListener.mouseClicked. lentelė ar popup iššokantis langas su duomenimis?


Rekomenduojami pranešimai

Sveiki.

Noriu padaryti paprastą dalyką. Noriu paspausti su pele tam tikrą vietą freime (swing JFrame) ir kad man iššoktų popup langelis ar lentelė visada pastovioje vietoje, to freimo apačioj dešinėje. O tam langelyje pagal paspaudimo vietą būtų rodoma informacija, tarkim paspaudimo vietos koordinatės.

 

Kaip tai gali būti atliekama? Kad aktyvuotųsi paspaudimas ir iššoktų lentelė?

Kaip suprantu reikia taikyti mouseClicked metodą, bet kaip toliau aktyvuotą tą lentelės iškvietimą?

 

Kol kas turiu tokį pavyzdį:

 

public void mouseClicked(MouseEvent e) {
       if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
           Point p = e.getPoint();
           int X = p.x;
           int Y = p.y;
           System.out.println("X: " + X);
           System.out.println("Y: " + Y);
//
//.... metodas aktyvuojantis lango iskvietima ir informacijos jame rodyma
//
   }

 

Su javascript pilna pavyzdžių, tačiau kaip padaryti su JAVA?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki.

Noriu padaryti paprastą dalyką. Noriu paspausti su pele tam tikrą vietą freime (swing JFrame) ir kad man iššoktų popup langelis ar lentelė visada pastovioje vietoje, to freimo apačioj dešinėje. O tam langelyje pagal paspaudimo vietą būtų rodoma informacija, tarkim paspaudimo vietos koordinatės.

 

Kaip tai gali būti atliekama? Kad aktyvuotųsi paspaudimas ir iššoktų lentelė?

Kaip suprantu reikia taikyti mouseClicked metodą, bet kaip toliau aktyvuotą tą lentelės iškvietimą?

 

Kol kas turiu tokį pavyzdį:

 

public void mouseClicked(MouseEvent e) {
       if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
           Point p = e.getPoint();
           int X = p.x;
           int Y = p.y;
           System.out.println("X: " + X);
           System.out.println("Y: " + Y);
//
//.... metodas aktyvuojantis lango iskvietima ir informacijos jame rodyma
//
   }

 

Su javascript pilna pavyzdžių, tačiau kaip padaryti su JAVA?

 

Labas. To Point nebūtinai reikia. Tiesiog paimk:

int x = e.getX();

int y = e.getY();

 

Nežinau kokios reikia lentelės, tačiau gali surašyti informaciją į JOptionPane.

http://docs.oracle.com/javase/tutorial/figures/uiswing/components/InformationalDialogMetal.png

Jei tau tinka, tada gali pridėti šį fragmentą kodo:

String zinute = "X : "+x+" Y : "+y;
final JOptionPane pane = new JOptionPane(zinute);
   final JDialog d = pane.createDialog((JFrame)null, "Pranešimas");
   d.setLocation(10,10);

setLocation() keiti kordinates į tokias, kurioj vietoj nori, kad atsirastų lentelė.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Šis pavyzdys man nesuveikia. Man reiktų iššokančios lentelės programos viduje, o ne apskritai kaip čia atskiras langas.

Gali tai būti ir kaip kokia papildoma panelė programoj atsidaranti, nors lentelė pagrindiniame lange man geriau tiktų.

 

Labas. To Point nebūtinai reikia. Tiesiog paimk:

int x = e.getX();

int y = e.getY();

 

Nežinau kokios reikia lentelės, tačiau gali surašyti informaciją į JOptionPane.

http://docs.oracle.com/javase/tutorial/figures/uiswing/components/InformationalDialogMetal.png

Jei tau tinka, tada gali pridėti šį fragmentą kodo:

String zinute = "X : "+x+" Y : "+y;
final JOptionPane pane = new JOptionPane(zinute);
   final JDialog d = pane.createDialog((JFrame)null, "Pranešimas");
   d.setLocation(10,10);

setLocation() keiti kordinates į tokias, kurioj vietoj nori, kad atsirastų lentelė.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Šis pavyzdys man nesuveikia. Man reiktų iššokančios lentelės programos viduje, o ne apskritai kaip čia atskiras langas.

Gali tai būti ir kaip kokia papildoma panelė programoj atsidaranti, nors lentelė pagrindiniame lange man geriau tiktų.

Neteko susidurti su tokiomis lentelėmis. Pasidairyk čia:

http://www.java2s.com/Questions_And_Answers/Swing/JFrame/Popup.htm

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na ieškausi kažko paprasto. Jei turi laiko tai gali parsiųsti ir matysi maždaug ko man reikia.

Čia yra projektėlis kuris vaizduoja žemėlapį:

http://mappanel.sourceforge.net/

 

Kairėj pusėj yra searchpanel ir per meniu juostą ji gali būti įjungiama,

arba įjungti galima Infopanele, tai tas info, ten yra lentelė kuri visada pastovioj vietoj ir priklausomai nuo pelės padėties ir tt, rodo atitinkamus duomenis. Man tokios lentelės reikėtų va kaip tik, ir būti idealu.

 

Aš pats darau kažką panašaus, savo poreikiam mėginu prisitaikyti šį projektą:

http://wiki.openstreetmap.org/wiki/JMapViewer

ir daugko nemoku. Tai ieškau pagalbos. Anoje temoje irgi kur klausiau apie Timel ir scroll ar mygtukus, susija su tuo kad noriu implementuoti į šį projektėlį.

 

Neteko susidurti su tokiomis lentelėmis. Pasidairyk čia:

http://www.java2s.com/Questions_And_Answers/Swing/JFrame/Popup.htm

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na ieškausi kažko paprasto. Jei turi laiko tai gali parsiųsti ir matysi maždaug ko man reikia.

Čia yra projektėlis kuris vaizduoja žemėlapį:

http://mappanel.sourceforge.net/

 

Kairėj pusėj yra searchpanel ir per meniu juostą ji gali būti įjungiama,

arba įjungti galima Infopanele, tai tas info, ten yra lentelė kuri visada pastovioj vietoj ir priklausomai nuo pelės padėties ir tt, rodo atitinkamus duomenis. Man tokios lentelės reikėtų va kaip tik, ir būti idealu.

 

Aš pats darau kažką panašaus, savo poreikiam mėginu prisitaikyti šį projektą:

http://wiki.openstreetmap.org/wiki/JMapViewer

ir daugko nemoku. Tai ieškau pagalbos. Anoje temoje irgi kur klausiau apie Timel ir scroll ar mygtukus, susija su tuo kad noriu implementuoti į šį projektėlį.

 

Nesu įsitikinęs, bet man rodos, jog čia ta lentelė nėra kažkoks komponentas atskiras, o ji yra nupiešta

naudojantis Graphics2D objektu. Tarkim sukuri klasę

public class Lentelė extends JPanel{}

 

į vidų įdedi

public void paintComponent(Graphics g){

}

naudojantis tuo Graphics objektu pieši tiesiai ant panelės ką tik nori. Daug čia nepapasakosiu. Tiesą sakant siūlyčiau perskaityti knygą "Filthy Rich Clients" čia viskas tikrai bus aprašyta. Čia manau tikrai advanced lygio programa ir teks pasimokyti norint tokią padaryti. Jei netingi atsisiųsk tą knygą ir patirinėk, sužinosi daug naudingų dalykų, padės ne tik šiame projekte.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

:) užskaitau. Geri dalykai tokiose knygose. Pradžiai su ta grafika žaisti pradėjau su JavaFX bet toliau vistiek prie swing teko pereiti :)

Bandysiu ieškoti sprendimų.

Grafika ten ir bus nupiešta matomai ir ant jos išdėstoma kas reikia, gal iš to pavyzdžio susigaudysiu kas per kodas yra, nes jis ten su visom klasėm viename faile stovi ir labai ilgas jau esti :)

 

 

 

Nesu įsitikinęs, bet man rodos, jog čia ta lentelė nėra kažkoks komponentas atskiras, o ji yra nupiešta

naudojantis Graphics2D objektu. Tarkim sukuri klasę

public class Lentelė extends JPanel{}

 

į vidų įdedi

public void paintComponent(Graphics g){

}

naudojantis tuo Graphics objektu pieši tiesiai ant panelės ką tik nori. Daug čia nepapasakosiu. Tiesą sakant siūlyčiau perskaityti knygą "Filthy Rich Clients" čia viskas tikrai bus aprašyta. Čia manau tikrai advanced lygio programa ir teks pasimokyti norint tokią padaryti. Jei netingi atsisiųsk tą knygą ir patirinėk, sužinosi daug naudingų dalykų, padės ne tik šiame projekte.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

:) užskaitau. Geri dalykai tokiose knygose. Pradžiai su ta grafika žaisti pradėjau su JavaFX bet toliau vistiek prie swing teko pereiti :)

Bandysiu ieškoti sprendimų.

Grafika ten ir bus nupiešta matomai ir ant jos išdėstoma kas reikia, gal iš to pavyzdžio susigaudysiu kas per kodas yra, nes jis ten su visom klasėm viename faile stovi ir labai ilgas jau esti :)

JavaFX taipogi nėra blogas pasirinkimas. Nesu daug su juo dirbęs, galima sakyti beveik nieko, bet dažnai patariama, tokiam "fancy stuff'ui" naudoti būtent JavaFX, o ne Swing.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Patiko man tas JavaFX, kuriant GUI interfeisą tikrai naudingų dalykų pilna, bet internete mažiau pavyzdžių ir diskusijų.

Be to man tenka su kitom projekto dalim kompromisų ieškoti todėl ir pasirintas tas swing variantas.

 

 

 

JavaFX taipogi nėra blogas pasirinkimas. Nesu daug su juo dirbęs, galima sakyti beveik nieko, bet dažnai patariama, tokiam "fancy stuff'ui" naudoti būtent JavaFX, o ne Swing.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

public void mouseClicked(MouseEvent e) {
 if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
   // nepamiršk stebėti ar jau nerodai to info lango. jį reikia įdėt tik kartą, kitaip turėsi 'memory leak' :)
   if (myInfoIsShowing) {
     // turėk kintamąjį info, kad galėtum nuolat atnaujinti informaciją
     info = new JLabel();
     mapContainer.add(info);

     // priklausomai nuo tavo mapContainer layout'o, nurodyk info poziciją. Kažkas panašaus į:
     // info.setLocation(new Point(mapContainer.getWidth() - 200, mapContainer.getHeight() - 200));
   }

   info.setText("tavo tekstas");
 }
}

 

Beje, JLabel gali ir HTML atvaizduoti, taip kad pasižaisk su formatuotu tekstu:

 

String infoText = "<html><b>bold</b> text, <div style='čia eina CSS'>cool text</div></html>";
info.setText(infoText);

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...