Rendre un JSCrollPane immédiat
Projet gus05 de développement Java :: Développements :: Quelque-unes de mes entités :: Programmation graphique Swing :: Composant JScrollPane
Page 1 sur 1
Rendre un JSCrollPane immédiat
Voici une entité qui permet de rendre un JScrollPane immédiat (un simple clic ramène l'ascenseur à l'endroit voulu).
gus.graphic.scrollpane.immediatscroll
gus.graphic.scrollpane.immediatscroll
- Code:
package gus05.entity.gus.graphic.scrollpane.immediatscroll;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import gus05.framework.core.Entity;
import gus05.framework.features.Give;
import gus05.framework.features.Register;
import javax.swing.BoundedRangeModel;
import javax.swing.JButton;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.plaf.metal.MetalScrollBarUI;
public class ImmediatScroll implements Entity, Give, Register, MouseListener, MouseMotionListener
{
public String getName() {return "gus.graphic.scrollpane.immediatscroll";}
public String getCreationDate() {return "2008.08.11";}
private boolean vertical = true;
private boolean horizontal = true;
public void register(String key, Object obj) throws Exception
{
if(key.equals("vertical"))
{vertical = Boolean.parseBoolean(obj.toString());return;}
if(key.equals("horizontal"))
{horizontal = Boolean.parseBoolean(obj.toString());return;}
throw new Exception("Unknown key: "+key);
}
public void give(Object obj) throws Exception
{
JScrollPane scroll = (JScrollPane)obj;
if(vertical)
{
JScrollBar bar = scroll.getVerticalScrollBar();
handleBar(bar);
}
if(horizontal)
{
JScrollBar bar = scroll.getHorizontalScrollBar();
handleBar(bar);
}
}
private void handleBar(JScrollBar bar)
{
bar.setUI(new ScrollBarUI0());
bar.addMouseListener(this);
bar.addMouseMotionListener(this);
bar.setBlockIncrement(0);
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {move(e);}
public void mouseDragged(MouseEvent e) {move(e);}
public void mouseMoved(MouseEvent e) {}
private void move(MouseEvent e)
{
JScrollBar bar = (JScrollBar)e.getSource();
BoundedRangeModel model = bar.getModel();
ScrollBarUI0 ui = (ScrollBarUI0) bar.getUI();
int decr_h = ui.getDecrButton().getHeight();
int incr_h = ui.getIncrButton().getHeight();
int h0 = bar.getHeight() - decr_h - incr_h;
double v = (e.getPoint().getY() - incr_h)/(double)h0;
int min = model.getMinimum();
int max = model.getMaximum();
int newValue = (int)(min + (max-min)*v);
bar.getModel().setValue(newValue);
}
private class ScrollBarUI0 extends MetalScrollBarUI
{
public JButton getDecrButton()
{return decrButton;}
public JButton getIncrButton()
{return incrButton;}
}
}
Projet gus05 de développement Java :: Développements :: Quelque-unes de mes entités :: Programmation graphique Swing :: Composant JScrollPane
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Mar 16 Sep - 12:01 par Gus
» Présentation du jeu Vindinium
Jeu 20 Fév - 15:32 par Gus
» Rechercher la cible la plus proche avec le "Breadth First Search"
Jeu 20 Fév - 13:06 par Gus
» Impression d'écran avec sélection de zone
Jeu 20 Fév - 12:12 par Gus
» Envoyer un mail par un compte Gmail
Jeu 25 Avr - 14:04 par Gus
» Streaming : comment télécharger les vidéos
Lun 4 Fév - 19:59 par Gus
» Synology : installer ipkg
Mar 22 Jan - 21:22 par Gus
» Trouver le type de lecteur avec JNA
Mer 9 Jan - 23:11 par Gus
» Adresse ip publique et adresse ip privée, Internet box et UPnP
Mer 9 Jan - 21:02 par Gus
» Accéder au numéro de série du lecteur par un script vb
Mer 9 Jan - 19:31 par Gus