Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problemi Con Le Combobox

    COME ESERCITAZIONE STO IMPLEMENTANDO UN EDITOR DI TESTO E DOVREI MIGLIORARLO IN MODO TALE CHE:

    1. AD ESEMPIO NEL CODICE SOTTOSTANTE IMPLEMENTO UNA COMBOBOX CON LA QUALE L'UTENTE CAMBIA LA GRANDEZZA DEL CARATTERE,
    VORREI MIGLIORARE QUESTO CODICE IN MODO TALE CHE LE MODIFICHE POSSANO ESSERE APPLICATE SOLO AL TESTO SELEZIONATO
    CON IL CURSORE OPPOURE A PARTIRE DALLA POSIZIONE OVE č PRESENTE IL CURSORE DEL TESTO. INOLTRE SAREBBE UTILE LIMITARE
    LA GRANDEZZA DELLA COMBOBOX A SOLE 3 COLONNE E FAR COMPARIRE LA COMPONENTE OLTRE CHE A NORD DEL FRAME MA ANCHE ALLINEATA
    A SINISTRA.

    //crea una casella combinata e aggiunge la grandezza dei caratteri
    sizeCombo = new JComboBox();
    //disabilita la modifica da parte dell'utente
    sizeCombo .setEditable(true);
    //aggiunge voci alla casella
    sizeCombo.addItem("8");
    sizeCombo.addItem("10");
    sizeCombo.addItem("12");
    sizeCombo.addItem("14");
    sizeCombo.addItem("16");
    // rilevatore di eventi della casella combinata cambia il carattere del testo con quello selezionato
    sizeCombo.addActionListener(new
    ActionListener(){
    public void actionPerformed(ActionEvent event){
    /* modifica il testo contenuto nella casella di testo in base
    al valore restituito da gerSelectedItem() e grandeza di default */
    textArea.setFont(new Font(
    (String)faceCombo.getSelectedItem(),
    Font.PLAIN,
    Integer.parseInt((String)sizeCombo.getSelectedItem ())));
    }//actionperformed
    });//ActionListener
    JPanel menuPanel = new JPanel();
    //inserisce la casella combinata fra uno degli elementi del pannello
    menuPanel.add(sizeCombo);
    //posiziona i pulsanti in basso al frame
    contentPane.add(menuPanel, BorderLayout.NORTH);


    2. AD ESEMPIO NEL CODICE SOTTOSTANTE IMPLEMENTO UNA COMBOBOX CON LA QUALE L'UTENTE CAMBIA IL TIPO DEL CARATTERE,
    VORREI MIGLIORARE QUESTO CODICE IN MODO TALE CHE LE MODIFICHE POSSANO ESSERE APPLICATE SOLO AL TESTO SELEZIONATO
    CON IL CURSORE OPPOURE A PARTIRE DALLA POSIZIONE OVE č PRESENTE IL CURSORE DEL TESTO. INOLTRE SAREBBE UTILE ACQUISIRE
    TUTTI I FONT PRESENTI SUL PC DELL'UTENTE E FAR COMPARIRE LA COMPONENTE OLTRE CHE A NORD DEL FRAME MA ANCHE ALLINEATA
    A SINISTRA.

    //crea una casella combinata e aggiunge i nomi dei caratteri
    faceCombo = new JComboBox();
    //disabilita la modifica da parte dell'utente
    faceCombo .setEditable(false);
    //aggiunge voci alla casella
    faceCombo.addItem("Serif");
    faceCombo.addItem("SansSerif");
    faceCombo.addItem("Monospaced");
    faceCombo.addItem("Dialog");
    faceCombo.addItem("DialogInput");
    // rilevatore di eventi della casella combinata cambia il carattere del testo con quello selezionato
    faceCombo.addActionListener(new
    ActionListener(){
    public void actionPerformed(ActionEvent event){
    /* modifica il testo contenuto nella casella di testo in base
    al valore restituito da gerSelectedItem() e grandeza di default */
    textArea.setFont(new Font(
    (String)faceCombo.getSelectedItem(),
    Font.PLAIN,
    Integer.parseInt((String)sizeCombo.getSelectedItem ())));
    }//actionperformed
    });//ActionListener
    //inserisce la casella combinata fra uno degli elementi del pannello
    menuPanel.add(faceCombo);
    //posiziona i pulsanti in basso al frame
    contentPane.add(menuPanel, BorderLayout.NORTH);
    Giuseppe SPECCHIO

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    in entrambi i casi ci vuole un JTextComponent che abbia stili di testo
    con un JEditorPane creato con text/html fai quello che dici con pochi tag html
    con un JTextPane ti crei gli stili apposta e li applichi al documento

  3. #3

    forse non sono stato felice nell'esprimermi

    ti ringrazio della risposta ma a dire la veritā non mi č stata tanto chiara o forse io non mi sono espresso bene su quale problemativa devo risolvere, ovvero principalmente ho chiesto come posso allineare una componente a sinistra, nel caso di un ComboBox come posso caricare tutti i tipi presenti sul PC, e come posso far attivare le modifiche non a tutto il testo della casella di testo ma solo ad una parte selezionata oppure a partire dalla posizione del cursore, magari per completezza č meglio che ti fornisco il codice dell'intero programma:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class TextEditTest{

    public static void main(String[] args){
    TextEditFrame frame = new TextEditFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); //permette di chiudere il frame
    frame.show(); //visualizza il frame
    }//main
    }//TextEditTest

    /*
    * Classname: TextEditFrame
    *
    * @version 1.0
    *
    * @since 03/06/2003
    *
    * @author Giuseppe SPECCHIO
    */


    public class TextEditFrame extends JFrame{

    /*** Variabili di Classe ***/
    private JTextArea textArea;
    private JTextField from;
    private JTextField to;

    private JComboBox faceCombo;
    private JComboBox sizeCombo;

    /*** Costruttore ***/

    /**
    @requires richiede i package java.awt, java.awt.even java.awt.geom, javax.swing, javax.swing.event, javax.swing.text e javax.swinf.undo
    @effects dopo aver acquisito le impostazioni dello schermo dal sistema operativo crea un frame il quale risulterā un quarto dell'intero schermo
    @return restituisce un frame pari ad 1/4 del video contenente un orologio e tre campi di testo per impostare l'ora
    */

    public TextEditFrame(){
    //acquisisce le dimensioni dello schermo
    //La classe Toolkit iteragisce con il sistema operativo
    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension screenSize = kit.getScreenSize(); //restituisce la dimensione dello schermo come oggetto Dimension
    int screenHeight = screenSize.height;
    int screenWidth = screenSize.width;
    //centra il frame nello schermo
    setSize(screenWidth/2, screenHeight/2); //dimezza la larghezza ed altezza delle dimensioni del video precdentemente acquisite
    setLocation(screenWidth/4, screenHeight/4); //consente di riposizionare il frame
    //imposta l'icona ed il titolo del frame
    Image img = kit.getImage("icon.gif");
    setIconImage(img); //prende un oggetto img e lo usa come icona del frame
    setTitle("Giuseppe SPECCHIO - Progetto LI4"); //imposta il titolo del frame
    //aggiunge un pannello al frame
    Container contentPane = getContentPane(); //restituisce l'oggetto pannello del contenuto del JFrame
    JPanel panel = new JPanel();
    panel.setBackground(SystemColor.window); //imposta il colore di sfondo del frame sul colore predefinto nel sistema operativo

    //aggiunge un pulsante per trovare del testo nell'area di testo
    JButton replaceButton = new JButton("Sostituisci");
    panel.add(replaceButton); //inserisce il pulsante fra uno degli elementi del pannello
    //imposta il gestore di eventi del pulsante insert
    replaceButton.addActionListener(new
    ActionListener(){
    public void actionPerformed(ActionEvent event){
    //acquisisce il testo dalla casella di testo Sostituisci
    String f = from.getText();
    //acquisisce la posizione della sottoscritta eventualemente presente nell'area di testo
    int n = textArea.getText().indexOf(f);
    if(n >= 0 && f.length() > 0)
    //sostuistuisce la sottostringa con quella nuova
    textArea.replaceRange(to.getText(), n,
    n + f.length());
    }//actionPerformed
    });//addActionListener
    //aggiunge una casella di testo dove inserire il testo da trovare
    from = new JTextField("", 8);
    panel.add(from); //inserisce la casella di testo fra uno degli elementi del pannello
    //inserisce l'etichetta
    panel.add(new JLabel("Con"));
    //aggiunge una casella di testo dove inserire il testo da sostituire
    to = new JTextField("", 8);
    panel.add(to); //inserisce la casella di testo fra uno degli elementi del pannello
    //posiziona i pulsanti in basso al frame
    contentPane.add(panel, BorderLayout.SOUTH);

    //aggiunge un area di testo
    textArea = new JTextArea(8, 40); //8 righe per 40 colonne
    //attiva le berre di scorrimento
    JScrollPane scrollPane = new JScrollPane(textArea);
    //inserisce del testo nell'area di testo
    textArea.setText("Giuseppe SPECCHIO, nato a Napoli (NA) il 30.03.1979");
    //abilita il ritorno a capo
    textArea.setLineWrap(true);
    //centra nel pannello la casella di testo
    contentPane.add(scrollPane, BorderLayout.CENTER);


    //crea una casella combinata e aggiunge la grandezza dei caratteri
    sizeCombo = new JComboBox();
    //disabilita la modifica da parte dell'utente
    sizeCombo .setEditable(true);
    //aggiunge voci alla casella
    sizeCombo.addItem("8");
    sizeCombo.addItem("10");
    sizeCombo.addItem("12");
    sizeCombo.addItem("14");
    sizeCombo.addItem("16");
    // rilevatore di eventi della casella combinata cambia il carattere del testo con quello selezionato
    sizeCombo.addActionListener(new
    ActionListener(){
    public void actionPerformed(ActionEvent event){
    /* modifica il testo contenuto nella casella di testo in base
    al valore restituito da gerSelectedItem() e grandeza di default */
    textArea.setFont(new Font(
    (String)faceCombo.getSelectedItem(),
    Font.PLAIN,
    Integer.parseInt((String)sizeCombo.getSelectedItem ())));
    }//actionperformed
    });//ActionListener
    JPanel menuPanel = new JPanel();
    //inserisce la casella combinata fra uno degli elementi del pannello
    menuPanel.add(sizeCombo);
    //posiziona i pulsanti in basso al frame
    contentPane.add(menuPanel, BorderLayout.NORTH);

    //crea una casella combinata e aggiunge i nomi dei caratteri
    faceCombo = new JComboBox();
    //disabilita la modifica da parte dell'utente
    faceCombo .setEditable(false);
    //aggiunge voci alla casella
    faceCombo.addItem("Serif");
    faceCombo.addItem("SansSerif");
    faceCombo.addItem("Monospaced");
    faceCombo.addItem("Dialog");
    faceCombo.addItem("DialogInput");
    // rilevatore di eventi della casella combinata cambia il carattere del testo con quello selezionato
    faceCombo.addActionListener(new
    ActionListener(){
    public void actionPerformed(ActionEvent event){
    /* modifica il testo contenuto nella casella di testo in base
    al valore restituito da gerSelectedItem() e grandeza di default */
    textArea.setFont(new Font(
    (String)faceCombo.getSelectedItem(),
    Font.PLAIN,
    Integer.parseInt((String)sizeCombo.getSelectedItem ())));
    }//actionperformed
    });//ActionListener
    //inserisce la casella combinata fra uno degli elementi del pannello
    menuPanel.add(faceCombo);
    //posiziona i pulsanti in basso al frame
    contentPane.add(menuPanel, BorderLayout.NORTH);

    }//TextEditFrame

    }//TextEditFrame{}
    Giuseppe SPECCHIO

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 © 2024 vBulletin Solutions, Inc. All rights reserved.