Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [Java]Array JTextArea

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965

    [Java]Array JTextArea

    Non si potrebbe fare un array di JTextArea?
    Il fatto e' che ho un JTabbedPane, ed ogni volta che creo una scheda (tramite evento) si dovrebbe formare un JTextArea, ma dovrebbe avere un nome diverso dagli altri, perche' se no come si farebbe a determinare il testo di ognuno?

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Non ho capito cosa vuoi fare, comunque sì!
    Puoi fare un array di qualsiasi Object.
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    JTextArea ta[30] = new JTextArea();

    mi ritorna errore

  4. #4
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Hai semplicemente sbagliato a scrivere; la sintassi corretta è:

    JTextArea ta[] = new JTextArea[30];

    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Ah si', grazie

    cmq ho bisogno ancora di 1 mano

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    import java.util.StringTokenizer;
    
    class editore extends JFrame implements ActionListener{
    JPanel pan;
    JTabbedPane tabbedPane;
    JButton nuovo;
    JTextArea ta[] = new JTextArea[30];
    
    editore(){
    super("Editor di testo, powered by Keratox");
    setBounds(10,10,600,560);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pan=new JPanel();
    
    tabbedPane = new JTabbedPane();
    
    JTextArea ta[] = new JTextArea(20,25)[0];
    ta[0].setLineWrap(true);
    JScrollPane jsp = new 
    
    JScrollPane(ta[0],ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
    , ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    
    JButton apri=new JButton("Apri");
    JButton salva=new JButton("Salva");
    nuovo = new JButton("Nuovo");
    JPanel pan =new JPanel();
    pan.add(salva);
    pan.add(apri);
    pan.add(nuovo);
    nuovo.addActionListener(this);
    
        tabbedPane.addTab("Untitled",  jsp);
        tabbedPane.addTab("Opzioni", pan ); 
        getContentPane().add(tabbedPane); 
    
    }
    
    
    
    public void actionPerformed(ActionEvent ae){
    Object src=ae.getSource();
    if(src==nuovo){
    int jt = ta.length();
    tabbedPane.addTab("Untitled", ta[jt+1]);
    }
    }
    
    public static void main(String[] args){
    editore ed=new editore();
    ed.show();
    }
    
    }
    Come faccio, se sono aperti 2 JTextArea(ta[0], ta[1]) a definire un ta[3] ???

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Nel codice ci sono un po di errori.

    Innanzitutto

    non devi scrivere

    JTextArea ta[] = new JTextArea(20,25)[0];

    ma

    JTextArea ta[] = new JTextArea[0];

    Inoltre in questo modo crei un array di zero elementi e non potrai aggiungergi nessuna JTextArea, se no viene sollevata un'eccezione. Se vuoi raccogliere le JTextArea in un array di al più 30 elementi devi scrivere:

    JTextArea ta[] = new JTextArea[30];

    Tieni presente inoltre che ta.length() ti dà la dimensione dell'array, che è costatnte e pari a 30, non ti dà il numero di elementi inseriti nell'array. Per fare ciò dovresti mantenerti un'apposita varibile che incrementi ogni volta che aggiungi una JTextArea, oppure, invece di usare un array usa un Vector e in questo caso puoi usare il metodo size() che ti dà il numero effettivo di elementi inseriti, e inoltre con un Vector non c'è bisogno di stabilire un numero massimo di elemeti, ma puoi inserire tante JTextArea quanto ti pare.

    Ciao.

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Nel codice ci sono un po di errori.

    Innanzitutto

    non devi scrivere

    JTextArea ta[] = new JTextArea(20,25)[0];

    ma

    JTextArea ta[] = new JTextArea[0];

    Inoltre in questo modo crei un array di zero elementi e non potrai aggiungergi nessuna JTextArea, se no viene sollevata un'eccezione. Se vuoi raccogliere le JTextArea in un array di al più 30 elementi devi scrivere:

    JTextArea ta[] = new JTextArea[30];

    Tieni presente inoltre che ta.length() ti dà la dimensione dell'array, che è costatnte e pari a 30, non ti dà il numero di elementi inseriti nell'array. Per fare ciò dovresti mantenerti un'apposita varibile che incrementi ogni volta che aggiungi una JTextArea, oppure, invece di usare un array usa un Vector e in questo caso puoi usare il metodo size() che ti dà il numero effettivo di elementi inseriti, e inoltre con un Vector non c'è bisogno di stabilire un numero massimo di elemeti, ma puoi inserire tante JTextArea quanto ti pare.

    Ciao.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ok, mettiamo ordine:
    Un array è una matrice (o un vettore, nel tuo caso) di JTextArea. Questo significa che hai un certo numero di JTextArea (che non è poi tanto diverso da avere un certo numeri di interi, un certo numeri di caratteri o altro), quindi un array di oggetti si crea esattamente come un qualsiasi altro array: si dice che tipo di dati deve contenere e quanti;
    codice:
    JTextArea ta[] = new JTextArea[30] // Se ne vuoi creare 30 di JTextArea
    Poi, come per tutti gli array, va popolato (ossia bisogna buttarci dentro qualcosa). Cosa va buttato dentro? Se fosse un array di interi, ci butteresti dentro degli interi, se fosse di caratteri ci si buttano dentro caratteri, è un array di JTextArea ci si buttano dentro delle JTextArea:
    codice:
    for (int i=0; i<30; i++) {
       ta[i] = new JTextArea(20, 25);
    }
    A questo punto lavori come con tutti gli altri array: quando devi far riferimento ad uno dei suoi elementi (in questo caso ad una JTextArea) la indicizzi tramite l'array;
    codice:
    ta[20].setText("Quello che vuoi"); // Scrivo nella 21-esima JTextArea il testo
    Ovviamente puoi anche crearle in momenti diversi, non necessariamente devi popolare l'array subito, ma stai attento a non sconfinare l'array: queste tue linee

    int jt = ta.length();
    tabbedPane.addTab("Untitled", ta[jt+1]);
    provocano un evidente errore: nella variabile jt hai il numero di elementi che l'array può contenere e, dovresti sapere, che gli elementi di un array si numerano a partire da 0 (quindi gli elementi validi vanno da 0 a jt-1). Se tu provi a far riferimenti all'elemento jt+1 succede questo:
    codice:
    |---|---|-----|------| -  - | -  -  -  |
    | 0 | 1 | ... | jt-1 |  jt  |  jt + 1  |
    |---|---|-----|------|  -  -|  -  -  - |
    Quelle tratteggiate sono celle dell'array che non esistono e tu facevi riferimento all'ultima di esse.

    Spero di aver chiarito un po' la questione degli array di oggetti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    Ah avevo risolto, comunque grazie!


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.