Originariamente inviato da anx721
Devi studiarti i layout manager; puoi partire da qui:
http://java.sun.com/docs/books/tutor...out/index.html
seguiti i vari link per iniziare a capirli
farti degli esempi ora è inutile percke l'argometno è molto esteso e anche non semplice, ogni layout si distingue per come dispone i componenti e per come tratta le dimensioni dei componenti inseriti; magari intanto puoi farci capire come vuoi che i tuoi componenti siano inseiti nella finestra e possiamo suggerirti come comporre iltutto; in genere l'effetto voluto si ottiene componendo piu pannelli uno dentro l'altro con diversi layout; ti consiglio di non impostare a null il layout per poter usare le coordinate nella disposizione deicomponenti: anche se all'inizio sono un po difficili coi layout riesci a fare tutto cio che ti serve in maniera piu elegante e meglio organizzata.
Ho dato uno sguardo alla guida che mi hai dato ma sto impazzendo un pò, vorrei utilizzare uno SpringLayout per creare qualcosa del tipo:
c.add(intarea);
c.add(primoTag) - c.add(primoText);
c.add(secondoTag) - c.add(secondoText);
c.add(sommaTag) - c.add(sommaText);
c.add(run);
Dove il primo tag è una scritta di intestazione, dove le variabili che finiscono con Tag sono oggetti JLabel mentre quelli che finiscono con Text sono dei JTextField.
Il codice che uso è il seguente:
codice:
//Includo le librerie per l'interfaccie grafiche
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//Creo la classe con gli oggetti frafici
public class grafica implements ActionListener {
//Variabili per settare il Layout
private static final int WINDOW_WIDTH = 500; //pixel
private static final int WINDOW_HEIGHT = 500; //pixel
private static final int FIELD_WIDTH = 20; // caratteri
private static final int AREA_WIDTH = 40; // caratteri
//private static final FlowLayout LAYOUT_STYLE =
// new FlowLayout();
private static final SpringLayout LAYOUT_STYLE = new SpringLayout();
private static final String INTESTAZIONE = "Inserisci i due numeri da sommare:";
//finestra per l'interfaccia grafica
private JFrame window = new JFrame("grafica.class");
//Stampo l'intestazione
private JTextArea intarea = new JTextArea(INTESTAZIONE, 2,
AREA_WIDTH);
//Campo per l'inserimento del primo num
private JLabel primoTag = new JLabel(" Primo numero");
private JTextField primoText = new JTextField(FIELD_WIDTH);
//Campo per l'inserimento del secondo numero
private JLabel secondoTag = new JLabel(" Secondo numero");
private JTextField secondoText = new JTextField(FIELD_WIDTH);
//Campo per il risultato
private JLabel sommaTag = new JLabel(" Risultato");
private JTextField sommaText = new JTextField(FIELD_WIDTH);
//pulsante di esecuzione
private JButton run = new JButton("Somma");
public grafica(){
//configura GUI
window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
intarea.setEditable(false);
intarea.setLineWrap(true);
intarea.setWrapStyleWord(true);
intarea.setBackground(window.getBackground());
sommaText.setEditable(false);
sommaText.setBackground(Color.WHITE);
//Registra il rilevatore di eventi
run.addActionListener(this);
//aggiunge i componenti alla finestra
Container c = window.getContentPane();
c.setLayout(LAYOUT_STYLE);
c.add(intarea);
c.add(primoTag);
c.add(primoText);
c.add(secondoTag);
c.add(secondoText);
c.add(sommaTag);
c.add(sommaText);
c.add(run);
//visualizza GUI
window.show();
}
//Gestore degli eventi
public void actionPerformed(ActionEvent e){
//recupera le risposte dell'utente
String response1 = primoText.getText();
double p = Double.parseDouble(response1);
String response2 = secondoText.getText();
double s = Double.parseDouble(response2);
//visualizza somma
double Doutput = p + s;
String output = String.valueOf(Doutput);
sommaText.setText(output);
}
//main, punto d'ingresso dell'applicazione
public static void main(String[] args) {
grafica gui = new grafica();
}
}
Da notare che ho già settato il tipo di layout come SpringLayout nella costante "LAYOUT_STYLE". Il fatto è che non ho capito bene come funziona il posizionamento tramite west ecc ecc.. se potessi farmi qualche esempio.