JavaFX ile popup menu yapimi

javafx
  • Turgay Can
  • Tarih

    23 Jan, 2013
  • Yorum

    0
  • Görüntüleme

    2248
  • İndirme

    0

JavaFX ile popup menu yapimi

Merhaba,
JavaFX ile ilk geliştirdiğim uygulamalardan birisi Multithread bir socket uygulamasıydı. Uygulama birden fazla istemcinin bir sunucuya bağlanıp aynı platform üzerinde haberleşmesini sağlıyor. Klasik bir sohbet uygulamasıdır. Uygulama üzerinde kullanıcı işlemleri için popupmenu örneği mevcut, paylaşayım.

Uygulamada ContextMenu ListView'ın içinde bulumaktadır. Burada sadece ContextMenu ile ilgili FXML kısmını paylaşıyorum.

contextMenu.fxml

   <contextMenu>
            <ContextMenu fx:id="cm">
              <items>
                <MenuItem mnemonicParsing="false" onAction="#kullaniciSohbetEt"  text="Sohbet Et.."
 fx:id="miKullaniciSohbetEt" />
                <SeparatorMenuItem mnemonicParsing="false" />
                <MenuItem mnemonicParsing="false" onAction="#kullaniciOzelKapaAc" text="Özel Kapa/Aç" 
 fx:id="miKullaniciOzelKapaAc" />
                <SeparatorMenuItem mnemonicParsing="false" />
                <MenuItem mnemonicParsing="false" onAction="#kullaniciBilgiAl" text="Bilgi Al.."
 fx:id="miKullaniciBilgiAl" />
                <SeparatorMenuItem mnemonicParsing="false" />
                <MenuItem mnemonicParsing="false" onAction="#kullaniciOpOl" text="\@Op"
  fx:id="miOperatorKonumu" />
              </items>
            </ContextMenu>
       </contextMenu>

contextMenu.java

@FXML
    private MenuItem miKullaniciSohbetEt, miKullaniciOzelKapaAc,
            miKullaniciBilgiAl, miOperatorKonumu;
    @FXML
    private ContextMenu cm;

    private Stage stage;

kullaniciBilgiAl metodu, aşağıdaki örnekte tetiklediğim metod

    @FXML
        private void kullaniciBilgiAl(ActionEvent event) {
            try {
                InetAddress thisIp = InetAddress.getLocalHost();
                MessageBox.show(stage, "IP : " + thisIp.getHostAddress(), 
"", MessageBox.ICON_INFORMATION);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

Menüyü tetiklemek için ListView 'ın içinden seçili ğenin lsitener'ı ile dinliyorum ve mouse'un sağ tuşu ise menü açılıyor

userList.getSelectionModel().selectedItemProperty()
                    .addListener(new ChangeListener<String>() {
                public void changed(final ObservableValue<? extends String> ov,
                        final String old_val, final String new_val) {
                    userList.addEventHandler(MouseEvent.MOUSE_CLICKED,
                            new EventHandler<MouseEvent>() {
                                @Override
                                public void handle(MouseEvent e) {
                                    if (e.getButton() == MouseButton.SECONDARY) {                                   
                                        if (ov.getValue() != null && ov.getValue().equals(userList.
                                                 getSelectionModel().getSelectedItem().toString())) {
                                            cm.show(stage, e.getScreenX(), e.getScreenY());
                                        }
                                    }
                                }
                            });

                }
            });

alt text
alt text

0 Yorum..

Yorum yapmak için "Giriş yapın" yada "Misafir üye" olarak yorum yapabilirsiniz.

Yorum Yap