Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141

    [ java ] realizzare highlight

    ho una TextArea ... all'interno devo scrive codice java e vorrei quindi sapere se esistono librerie che realizzano il cossidetto highlight

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    ho trovato del codice che svolge questa funzione :

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.regex.*;
    import javax.swing.*;
    import javax.swing.text.*;
    
    public class JSyntaxHighlight extends JTextArea implements KeyListener
      {
    
      Highlighter evidenziatore;
      Highlighter.HighlightPainter effetto;
      Pattern pattern;
      Matcher matcher;
      String keyWords[]= { "abstract","boolean","break","byte","case","catch","char","class","const","continue","default","do","double","else","extends","final","finally","float","for","goto","if","implements","import","instanceof","int","interface","long","native","new","package","private","protected","public","return","short","static","super","switch","syncronized","this","throw","throws","transient","try ","void","volatile ","while" };
      public JSyntaxHighlight()
        {
        super();
        evidenziatore = getHighlighter();
        effetto = new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
        addKeyListener(this);
        }
    
      public void keyReleased(KeyEvent ke) {}
    
      public void keyPressed(KeyEvent ke) {}
    
      public void keyTyped(KeyEvent ke)
        {
        evidenziatore.removeAllHighlights();
        try
          {
          for(int i = 0; i < keyWords.length; i++)
            {
            pattern = Pattern.compile("\\b" + keyWords[i] + "\\b");
            matcher = pattern.matcher(getText());
            while(matcher.find())
              evidenziatore.addHighlight(matcher.start() , matcher.end() , effetto);
            }
          }
         catch(Exception e) {}
        }
    
      }

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import java.io.*;
    
    public class Prova extends JFrame implements ActionListener {
    JSyntaxHighlight hight;
    JPanel panel;
    JButton crea,exit;
    
    public Prova() {
    setTitle( "Inserimento dati per una simulazione da testo" );
    setSize( 600, 500 ); 
    panel = new JPanel(new BorderLayout());
    //areaTesto.setSize(new Dimension(600,400) );
    //JScrollPane scrollingArea = new JScrollPane(areaTesto);
    hight= new JSyntaxHighlight();
    crea=new JButton("Controlla e Crea");
    exit=new JButton("Exit");
    //quando si passa il mouse sopra il crea appare questa scritta
    crea.setToolTipText("Verifica i dati e avvia la simulazione"); 
    exit.setToolTipText("Chiude la finestra"); 
    
    //aggiunge crea e label al pannello
    panel.add(crea , BorderLayout.NORTH);
    panel.add(exit , BorderLayout.SOUTH);
    panel.add(hight, BorderLayout.CENTER);
    
    getContentPane().add( panel );
    
    // Posiziona al centro dello schermo.
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frame = getSize();
    setLocation(
    (screen.width - frame.width) / 2,
    (screen.height - frame.height) / 2
    );
    
    //registra evento click sul crea
    crea.addActionListener(this);
    exit.addActionListener(this);
    }
    
    //crea ascoltatore di eventi 
    public void actionPerformed( ActionEvent event )
    {
    Object source = event.getSource();
    if(source==crea){ }
    if(source==exit){ System.exit(-1); }
    
    }
    
    
    //main 
    public static void main(String args[]) {new Prova().show(); }
    }

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.