Oppure

Loading
18/09/08 23:56
xfiles
Salve , ho iniziato da poco a interessarmi del linguaggio Java e devo dire che lo trovo davvero interessante .....
Potreste aiutarmi a risolvere questo problema ?
In pratica devo creare una semplice finestra che visualizzi 15 - 20 righe di testo , ma tutti i miei tentativi sono falliti miseramente .

Se inserisco una sola riga va tutto bene , ma appena aggiungo le altre mi da errore , niente da fare !!!

Questo è il codice del programmino :

import java.awt.*;
import java.awt.event.*;

public class PrimaFinestra extends Frame
{
BorderLayout layout = new BorderLayout();
Panel contentPanel = new MyPanel();
Label messageLabel = new Label();
FrameListener frameListener = new FrameListener();

//** INIZIO CLASSI INTERNE PER LA GESTIONE EVENTI....    
class FrameListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
//** FINE CLASSI INTERNE PER LA GESTIONE EVENTI....    

public PrimaFinestra()
{
this.setTitle("Finestra AWT";);
this.setSize(300, 60);

//***Definisco il posizionamento della finestra rispetto allo schermo ...
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
int Altezza = d.height;
int Larghezza = d.width;
setLocation(Larghezza / 4, Altezza / 4);

// imposta il layout del Frame
this.setLayout(layout);

// Inizializza il testo della Label
messageLabel.setText("DA QUI' INIZIO A INSERIRE LE RIGHE DI TESTO ";);


// inserisce la Label nel Panel
contentPanel.add(messageLabel);

// inserisce il Panel nel Frame
this.add(contentPanel, BorderLayout.CENTER);

// assegna il listener al frame
this.addWindowListener(frameListener);
}

public static void main(String[] args)
{
Frame FirstWindow = new PrimaFinestra();
FirstWindow.show();
}
}

class MyPanel extends Panel
{
MyPanel()
{
FlowLayout layout = (FlowLayout)getLayout();
layout.setAlignment(FlowLayout.LEFT);
}
}


:-? Ragazzo sei nei guai !!!!
Ultima modifica effettuata da xfiles 19/09/08 12:38
aaa
19/09/08 12:14
VaLeRiO
Con una Label/JLabel puoi inserire una sola riga.
Usa una TextArea o JTextArea e poi richiama il suo metodo append(). Così potrai creare tante righe.
aaa
19/09/08 12:49
xfiles
Con una Label/JLabel puoi inserire una sola riga.
Usa una TextArea o JTextArea e poi richiama il suo metodo append(). Così potrai creare tante righe.

Grazie intanto per l'interesse mostrato , dalla tua risposta ho capito che devo cambiare direzione , ma sinceramente non so come fare per richiamare il metodo append() , potresti farmi un esempio pratico da applicare al programmino ?

saluti



:-|
aaa
21/09/08 7:46
VaLeRiO
Non modifico il tuo codice perchè è molto semplice.
Al posto della JLabel dichiara una JTextArea passando al costruttore le colonne e le righe.

Poi, in un punto qualsiasi del programma fai così:
textArea.append(stringa + "\n"); //textArea è l'oggetto di tipo JTextArea


Per esempio se volessi mettere nella JTextArea valori da 0 a 50 dovresti mettere:
for(int i = 0 ; i <= 50 ; i++) textArea.append("" + i + "\n");


Quando non riesci in questo tipo di cose ti consiglio di usare google. Ti sarebbe bastato scrivere "JTextArea Java" e avresti trovato svariati tutorial dai quali imparare (sopratutto della sun).

Ciao!

ps: ti consiglio di usare le Swing non le AWT.
Ultima modifica effettuata da VaLeRiO 21/09/08 7:48
aaa
21/09/08 22:51
xfiles
Ciao VaLeRiO , purtroppo non sono ancora riuscito a risolvere il problema con la JTextArea , d'altra parte sono ancora allo stato embrionale con Java.............. , ma sono convinto che le tue indicazioni potranno essermi d'aiuto .
Nel frattempo ho trovato del codice in giro che mi visualizza il testo su più righe usando JTextField(); e tutto sommato il risultato non è niente male .

PS. Ti ho mandato il codice che ho trovato via email

Grazie per i suggerimenti che mi hai dato !!




:k:
Ultima modifica effettuata da xfiles 21/09/08 22:54
aaa
22/09/08 11:08
VaLeRiO
Inanzitutto ti sconsiglio di iniziare con le interfacce grafiche se sei un novizio con Java.

Però se è questo che vuoi fare, prova a spiegare bene cosa vuoi fare e io ti dico in dettaglio.

Nell'esempio non usa le JTextField per mettere i risultati ma usa la JTextArea proprio come te l'ho spiegato io. Tuttavia non seguire esempi così "complicati" per imparare.

Guarda qua e ci sono dei piccoli tutorial su tutti i componenti disponibili:
java.sun.com/docs/books/tutorial/ui/features/…

Ciao!
aaa
22/09/08 20:26
xfiles
Felice di risentirti ..... dunque la mia necessità era quella di creare una semplice " finestra / interfaccia " che possa visualizzare molte righe di testo , tutto quì !

Volevo chiederti una cosa : secondo te è possibile aprire un file HTML con java ? Ho cercato su Google ma sono riuscito a trovare soltanto degli esempi ( che funzionano ) per aprire file di tipo exe , ma se tento di aprire altri file , niente da fare ......

PS. interessante il link che mi hai suggerito

thanks Saluti


:k:
aaa
23/09/08 10:40
VaLeRiO
Che palle devo riscrivere il post (connessione di merda!)

Dicevo, per visualizzare il testo HMTL usa una JEditorPane.

Per tagliare la testa al toro ti posto il codice per una finestra con una JTextArea.

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

/**
 * 
 *  
 * @author Valerio
 */
public class GUI extends JFrame {

	// Ecco la JTextArea nella quale puoi scrivere su più righe di testo.
	private JTextArea textArea = new JTextArea(5,30);
	
		public GUI() {
			super("GUI");
			
			setFrameProperties();
			setElementsProperties();
			setContentPane(getMainPanel());
			pack();
			
		}
		
	/**
	 * Imposta le properietà della finestra (dimensione, posizione ecc..)
	 */
	private void setFrameProperties() {
		
		setSize(200,200);
		setLocation(200,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setResizable(false);
		setVisible(true);
		
	}
	
	/**
	 * Imposta le proprietà degli elementi grafici (colori, opzioni ecc..)
	 */
	private void setElementsProperties() {
		
		textArea.setForeground(Color.blue); // Colore del testo
		textArea.setWrapStyleWord(true); // A capo le parole troppo lunghe per stare su una sola riga
		textArea.setLineWrap(true); // A capo automatico
		textArea.setMargin(new Insets(5,5,5,5)); // I margini nella JTextArea dai lati.
		
	}
	
	/**
	 * Questo metodo ritorna il panello centrale con già disposti i componenti grafici.
	 * 
	 * @return
	 */
	private JPanel getMainPanel() {
		
		JPanel p = new JPanel(new BorderLayout());
		p.setBorder(BorderFactory.createTitledBorder(" Text area ")); // Bordo
		
		// Aggiungo in una JScrollPane per avere la balla di scorrimento laterale.
		p.add(new JScrollPane(textArea), BorderLayout.CENTER);
		
		return p;
		
	}
		
	public static void main(String args[]) { new GUI(); }
	
}


Ti stai perdendo in un bicchiere d'acqua però. Ti consiglio di modificare il tuo metodo di apprendimento altrimenti sarai sempre con i piedi nella sabbia.

Leggi più tutorial, guardati più esempi ed impara ad estrarne ciò che ti serve.

Ciao! :P
aaa