Utilizzo JtextField - GUI con Swing

di il
1 risposte

Utilizzo JtextField - GUI con Swing

Ciao a tutti!
Per un progetto di Java che devo consegnare mi manca solo l'interfaccia grafica ma non avendone mai fatte ho provato a farne una semplice, senza il codice del progetto sotto solo per vedere come procedere...praticamente avrei bisogno di una label 'Messaggio:' con un TextField e sotto un bottone invia...sulla label e sul bottone non ho problemi ma la TextField non si vede e non ne capisco il motivo!
Potreste darmi una mano?!
Vi metto il codice, per quanto banale, di questa interfaccia grafica...
import java.util.*;
import java.io.*;
import javax.swing.*;

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

public class Finestra{
	
	public void Grafica()
	{
		final String messaggio = "";
		final JTextField invioMessField;
		BorderLayout layout = new BorderLayout();
		
		//creazione finestra per interfaccia grafica
		JFrame finestra = new JFrame("Starter");
		finestra.setLocation(100, 100);
		finestra.setSize(400, 300);
		finestra.setVisible(true);
		finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//JPanel panel = new JPanel();
		finestra.setLayout(layout);
		
		JLabel invioMessLabel;
		invioMessLabel = new JLabel();
		invioMessLabel.setHorizontalAlignment(SwingConstants.LEFT);
		invioMessLabel.setForeground(new Color(0,0,255));
		invioMessLabel.setText("Messaggio:");

		finestra.add(invioMessLabel, BorderLayout.CENTER);
		
		JButton invia;
		invia = new JButton("Invia");
		invia.addMouseListener(new MouseListener() {
			public void mouseReleased(MouseEvent e)
			{
				System.out.println("Released!!\n");
			}
			public void mousePressed(MouseEvent e)
			{
				System.out.println("Pressed!!\n");
			}
			public void mouseExited(MouseEvent e)
			{
				System.out.println("Exited!!\n");
			}
			public void mouseEntered(MouseEvent e)
			{
				System.out.println("Entered!!\n");
			}
			public void mouseClicked(MouseEvent e)
			{
				System.out.println("Inviaaaa!!\n");
			}
		});
		finestra.add(invia, BorderLayout.SOUTH);
		
		invioMessField = new JTextField(1);
		invioMessField.setForeground(new Color(0,0,255));
		invioMessField.setSelectedTextColor(new Color(0,0,255));
		invioMessField.setToolTipText("Messaggio da inviare");
		invioMessField.setText("Messaggio");
		invioMessField.setColumns(100);
		invioMessField.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//messaggio = invioMessField.getText();
				System.out.println(invioMessField.getText()+"\n");
			}
		});
		finestra.add(invioMessField, BorderLayout.CENTER);
	}
	
	public static void main(String[] argv)
	{
		Finestra prova = new Finestra();
		prova.Grafica();
	}
}
Ho tolto il panel e ho aggiunto gli elementi direttamente alla finestra perchè altrimenti se usavo il panel non vedevo nemmeno label e bottone...

1 Risposte

  • Re: Utilizzo JtextField - GUI con Swing

    Metti alla fine della della classe finestra l'istruzione

    finestra.validate();
    e posiziona il Jlabel come finestra.add(invioMessLabel, BorderLayout.WEST);
    e il textfield come finestra.add(invioMessField, BorderLayout.CENTER);
    sennò si sovrappongono.
    inoltre la classe funziona..ma è qualcosa di inaccettabile dal punto di vista formale.
    Mancano costruttori, dichiarazione dei componenti come private e tante altre cose.
    Se vuoi far qualcosa di più elabprato prenditi un bel libro o un tutorial e comincia a studiare le GUI.

    Ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte