Ciao,

vorrei creare un programmino desktop da usare a lavoro. In particolare l'interfaccia che vorrei realizzare è la seguente (la riporto in maniera schematica):

codice:
   JLabel   JTextfield    JButton
   JLabel   JTextfield    JButton
   JLabel   JTextfield
                
              JButton
Le prime due righe solo dei file chooser, la terza serve a selezionare un path e infine c'è un bottone che fa partire l'esecuzione.

Non avendo mai progettato interfacce con i layout Java sono in difficoltà e vorrei un consiglio circa la progettazione.

Ho provato ad utilizzare un BorderLayout (per il bottone in basso) e un GridLayout (per le prime tre righe), ma come da comportamento di default Java "estende" graficamente tutti i componenti all'intero spazio a disposizione...

Devo quindi usare un JPanel per ciascun elemento della griglia con un Layout diverso (ad esempio un FlowLayout), ma tutti gli elementi vengono predisposti al centro del pannello.

A questo punto mi chiedo se mi sta sfuggendo qualcosa...mi sembra tutto un pò troppo complicato per un'interfaccia così semplice...

Sapete darmi qualche consiglio?

Riporto il codice che ho scritto finora.

Grazie mille per l'aiuto,
Francesco

codice:
package main;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class GUI extends JFrame {

	public static void main(String[] args) {
		
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				GUI g = new GUI();
			}
		});
	}
	
	public GUI() {
		
		super("Sample program");
		this.setSize(600, 400);
		this.setLocationRelativeTo(null);
		
		this.setLayout(new BorderLayout());
		
		// Set the central panel
		JPanel centralPanel = new JPanel();
		centralPanel.setLayout(new GridLayout(3, 3));
		
		// First row
		JLabel templateLabel = new JLabel("Template:");
		JTextField templateText = new JTextField();
		JButton templateButton = new JButton("Select File");
		
		// Second row
		JLabel sourceLabel = new JLabel("Source:");
		JTextField sourceText = new JTextField();
		JButton sourceButton = new JButton("Select File");
		
		// Third row
		JLabel destinationLabel = new JLabel("Destination:");
		JTextField destinationText = new JTextField("Text1");
		
		centralPanel.add(templateLabel);
		centralPanel.add(templateText);
		centralPanel.add(templateButton);
		
		centralPanel.add(sourceLabel);
		centralPanel.add(sourceText);
		centralPanel.add(sourceButton);
		
		centralPanel.add(destinationLabel);
		centralPanel.add(destinationText);
		
		this.add(centralPanel, BorderLayout.CENTER);
		
		// Set the bottom panel for the 'Execute' button
		JPanel bottomPanel = new JPanel();
		bottomPanel.setLayout(new FlowLayout());
		JButton executeButton = new JButton("Execute");
		bottomPanel.add(executeButton);
		this.add(bottomPanel, BorderLayout.SOUTH);
		
		this.setVisible(true);
	}
}