Recommandez moi un Objet Graphique SVP

Résolu
oubaalouni Messages postés 5 Statut Membre -  
oubaalouni Messages postés 5 Statut Membre -
Bonjour,

J'aimerai développer une interface graphique en JAVA qui ressemble a "google traduction" mais je ne sais pas quel objet graphique utiliser pour le faire apparaître un mot en jaune lorsque la sourie est sur ce dernier.
Je précise ce n'ai pas le traducteur en lui même qui m'intéresse mais plutôt le graphique utilisé pour mettre en valeur les mots que la sourie survole.

Merci pour votre aide.

Bonne journée :)

3 réponses

  1. Utilisateur anonyme
     
    Ok, alors voici un exemple complet:

    package hacktrack.highlighter;
    
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Point;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.EventObject;
    
    import javax.swing.BorderFactory;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.event.CaretEvent;
    import javax.swing.event.CaretListener;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.DefaultHighlighter;
    
    public class HighlighterDemo extends JFrame {
    	private static final long serialVersionUID = 6086759176279462425L;
    
    	public HighlighterDemo() {
    		super("Highlighter Demo");
    		init();
    	}
    
    	private void init() {
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		Container c = getContentPane();
    		JTextArea textArea = new JTextArea(
    				"Petite démo de 'highlight' en Swing", 10, 40);
    		HighlighterListener highlighterListener = new HighlighterListener();
    		textArea.addCaretListener(highlighterListener);
    		textArea.addMouseListener(highlighterListener);
    		textArea.addMouseMotionListener(highlighterListener);
    		textArea.setBorder(BorderFactory
    				.createTitledBorder("Tape du texte ici, puis sélectionne un mot ou déplace la souris sur un mot"));
    		c.add(textArea);
    	}
    
    	class HighlighterListener extends MouseAdapter implements CaretListener {
    
    		@Override
    		public void caretUpdate(CaretEvent e) {
    			int selectionEnd = e.getDot();
    			int selectionBegin = e.getMark();
    			int begin = getTextBeginIndex(getText(e), selectionBegin);
    			int end = getTextEndIndex(getText(e), selectionEnd);
    			try {
    				highlight((JTextArea) e.getSource(), begin, end);
    			} catch (BadLocationException e1) {
    				e1.printStackTrace();
    			}
    		}
    
    		@Override
    		public void mouseMoved(MouseEvent e) {
    			int x = e.getX();
    			int y = e.getY();
    			JTextArea textArea = (JTextArea) e.getSource();
    
    			int locationOfCharUnderMouse = textArea
    					.viewToModel(new Point(x, y));
    			int begin = getTextBeginIndex(getText(e), locationOfCharUnderMouse);
    			int end = getTextEndIndex(getText(e), locationOfCharUnderMouse);
    			try {
    				highlight((JTextArea) e.getSource(), begin, end);
    			} catch (BadLocationException e1) {
    				e1.printStackTrace();
    			}
    
    		}
    
    		private String getText(EventObject e) {
    			return ((JTextArea) e.getSource()).getText();
    		}
    
    		private int getTextBeginIndex(String text, int startFromIndex) {
    			for (int i = startFromIndex - 1; i > -1; i--) {
    				if (text.substring(i, i + 1).equals(" "))
    					return i + 1;
    			}
    			return 0;
    		}
    
    		private int getTextEndIndex(String text, int startFromIndex) {
    			for (int i = startFromIndex; i < text.length(); i++) {
    				if (text.substring(i, i + 1).equals(" "))
    					return i;
    			}
    			return text.length();
    		}
    
    		private void highlight(JTextArea textarea, int begin, int end)
    				throws BadLocationException {
    			DefaultHighlighter.DefaultHighlightPainter highlighter = new DefaultHighlighter.DefaultHighlightPainter(
    					Color.YELLOW);
    			textarea.getHighlighter().removeAllHighlights();
    			textarea.getHighlighter().addHighlight(begin, end, highlighter);
    		}
    
    	}
    
    	public static void main(String[] args) {
    		HighlighterDemo demo = new HighlighterDemo();
    		demo.pack();
    		demo.setVisible(true);
    	}
    }
    
    


    ;-)
    HackTrack
    1
    1. oubaalouni Messages postés 5 Statut Membre
       
      Merci Beaucoup c'est exactement ce que je cherchais
      :)
      Au revoir.
      0
  2. Utilisateur anonyme
     
    Salut!

    Il s'agit d'une application Swing ou d'une application Web?

    ;-)
    0
  3. oubaalouni Messages postés 5 Statut Membre
     
    Salut,

    Une application Swing, j'ai oublié de le préciser ... sorry :p
    0