Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Problemi con Swing

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    2

    Problemi con Swing

    Salve a tutti,
    su questo forum ho trovato spesso soluzioni ai miei problemi.
    E' la prima volta che programmo in JAVA e quindi spesso non so nemmeno dove cercare quello che mi serve

    Veniamo al dunque..

    Ho una finestra nella quale ho creato un JScrollpane contente un JPanel con un GridLayout (40x40)
    Il JPanel è un tabellone di caselle (altri JPanel)..
    Siccome il JPanel è più grosso dello JScrollpane, mi si visualizzano correttamente le barre di scorrimento.

    Adesso vorrei fare due cose ma non so da dove iniziare:

    - ho dei bottoni nella finestra principale che sono dei riferimenti ad alcune caselle.. è possibile fare in modo che cliccando questi bottoni il "tabellone" si sposti automaticamente? (cioè che le barre di scorrimento facciano in automatico il movimento che l'utente dovrebbe fare per visualizzare la casella relativa)

    - vorrei che cliccando e tenendo premuto il mouse sul tabellone si possa spostare il tabellone senza dover usare le barre di scorrimento (un pò come succede con i pdf quando appare la manina)

    Grazie mille anche solo per aver letto ^^
    Spero di essere stato abbastanza chiaro

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    2
    ho risolto il secondo problema con questo codice trovato su internet:

    codice:
    import java.awt.Cursor;
    import java.awt.Point;
    import java.awt.Rectangle;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.HierarchyEvent;
    import java.awt.event.HierarchyListener;
    import java.awt.event.MouseEvent;
    
    import javax.swing.JComponent;
    import javax.swing.JViewport;
    import javax.swing.SwingUtilities;
    import javax.swing.event.MouseInputAdapter;
    
    class DragMoverListener extends MouseInputAdapter implements ActionListener, HierarchyListener{
    	
    	private static final int SPEED = 2;
    	private final Cursor dc;
    	private final Cursor hc = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);
    	private final Rectangle rect = new Rectangle();
    	private final javax.swing.Timer scroller;
    	private final JComponent label;
    	private final JViewport vport;
    	private Point startPt = new Point();
    	private Point move  = new Point();
    	
    	public DragMoverListener(JViewport vport, JComponent comp) {
    		this.vport = vport;
    		this.label = comp;
    		this.dc = label.getCursor();
    		this.scroller = new javax.swing.Timer(5, this);
    		vport.addMouseMotionListener(this);
    		vport.addMouseListener(this);
    		vport.addHierarchyListener(this);
    	}
    	
    	public void hierarchyChanged(HierarchyEvent e) {
    		if((e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0 && !vport.isDisplayable()) {
    			scroller.stop();
    		}
    	}
    	
    	public void actionPerformed(ActionEvent e) {
    		Rectangle vr = vport.getViewRect();
    		int w = vr.width;
    		int h = vr.height;
    		Point ptZero = SwingUtilities.convertPoint(vport,0,0,label);
    		rect.setRect(ptZero.x-move.x, ptZero.y-move.y, w, h);
    		label.scrollRectToVisible(rect);
    	}
    	
    	public void mouseDragged(MouseEvent e) {
    		scroller.stop();
    		Point pt = e.getPoint();
    		move.setLocation(SPEED*(pt.x-startPt.x), SPEED*(pt.y-startPt.y));
    		startPt.setLocation(pt);
    		scroller.start();
    	}
    	
    	public void mousePressed(MouseEvent e) {
    		label.setCursor(hc);
    		startPt.setLocation(e.getPoint());
    		scroller.stop();
    	}
    	
    	public void mouseReleased(MouseEvent e) {
    		label.setCursor(dc);
    	}
    	
    	public void mouseExited(MouseEvent e) {
    		label.setCursor(dc);
    		move.setLocation(0, 0);
    		scroller.stop();
    	}
    	
    }
    scrivendo dove mi interessava queste righe:

    codice:
    JViewport v = myscrollpane.
    v.add(mypanel);
    new DragMoverListener(v, mypanel)
    se qualcuno avesse delle idee per il primo dubbio, sono qui

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.