Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    20

    [JAVA] Mouse Listener & JInternalFrame

    Salve a tutti,
    il mio problema è il seguente:
    ho creato un JPanel che ha un MouseListener e un MouseMotionListener e fin qui tutto bene. Poi quando il mouse clicca su di un oggetto all'interno di questo jpanel si dovrebbe aprire un JInternalFrame.
    Qualcuno mi puo' dire come fare? Ho provato ad adattare ciò che ho letto nei tutorial di Sun ma mi succede che mi si apre il JInternalFrame a coprire tutti il JPanel e non c'è modo di ridimensionarlo, o spostarlo. Ho provato a disattivare i listeners del mouse (entrambi) ma non funziona ancora.
    Qualcuno a qualche suggerimento su dove aggiungere questo JInternalFrame? Sul desktop o sul JPanel o dove? Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Posta un po' di codice... non ho capito dove stia il problema.



    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    20
    questa è la classe dell'area in cui vengono disegnati gli oggetti.
    se clicco su di essa si seleziona un punto..modificando il valore di una variabile. Poi se premo "invio" si deve aprire un JInternalFrame

    class DrawingArea extends JPanel implements MouseMotionListener {
    ..
    public DrawingArea() {

    addMouseMotionListener(this);
    nodeRay = new double[2];
    formatter.setMaximumFractionDigits(4);
    formatter.setMinimumFractionDigits(4);
    formatter.setMaximumIntegerDigits(7);
    formatter.setMinimumIntegerDigits(7);



    addMouseListener(new MouseHandler());

    KeyHandler listenerKey = new KeyHandler();
    addKeyListener(listenerKey);
    ...

    //La classe ha un metodo mouseMoved che modifica dei testi
    //su di un altro jpanel

    public void mouseMoved(MouseEvent e) {

    Interfaccia.xCoordG.setText(" " + formatter.format
    ((e.getX()
    +traslX*scalaX)/scalaX));
    Interfaccia.yCoordG.setText(" " + formatter.format(fixY
    (e.getY()/scalaY-traslY)));

    }

    //C'è anche un metodo PaintComponent
    public void paintComponent(Graphics g) {


    //il metodo che dovrebbe far aprire il JInternalFrame

    private class KeyHandler implements KeyListener {


    public void keyPressed(KeyEvent event) {
    removeMML();
    int keyCode = event.getKeyCode();
    if ((keyCode==KeyEvent.VK_ENTER) && (NODE_SELECTED!=0)) {

    JInternalFrame myframe = new JInternalFrame("US",true);
    desktop.add(myframe);
    myframe.setLocation(20, 20);
    myframe.setSize(100, 100);
    myframe.setVisible(true);

    }

    }
    public void keyReleased(KeyEvent event) {}
    public void keyTyped(KeyEvent event) {}
    }

    Il problema è che si apre un JInternalFrame che ricopre totalmente
    il JPanel DrawingArea e non è possibile spostarlo, ridimensionarlo o altro.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Prova ad aggiungere al costruttore del tuo JPanel questa riga:
    codice:
    setLayout(null);
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    20
    ciao!
    grazie per il suggerimento. Ora il JInternalFrame si apre e le dimensioni sono corrette e anche la posizione che gli ho dato. Se provo a spostarlo pero' scompare...è come se il JPanel sottostante (quello che contiene il JInternalFrame) venga ridisegnato e il JInternalFrame scompare al di sotto di esso. Cosa posso fare?

    Ho provato a creare un metodo del JPanel che contiene il JInternalFrame che ha il compito di crare il JInternalFrame:

    private void addJp() {
    setLayout(null);
    desktop = new JDesktopPane();
    JInternalFrame myframe = new JInternalFrame("US");
    myframe.setLocation(20, 20);
    myframe.setSize(200, 200);
    myframe.setVisible(true);

    desktop.add(myframe);
    setContentPane(desktop);

    }
    ma in questo modo Lo schermo diviene di colore blu e il JInternalFrame appare correttamente e si puo' spostare..funziona bene, pero' tutto quello che era sotto è scomparso, forse perchè ho cambiato il contentpane.

    Grazie per ulteriori aiuto

    bye

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.