PDA

Visualizza la versione completa : [java] interfaccia grafica


gxgijjy
30-06-2002, 19:02
Dopo aver studiato swing per un mese non ho ancora trovato il modo per rendere ridimensionabili i bottoni o le JTextField all' interno di un pannello. Aiutatemi!!:cry:

Pablob
30-06-2002, 22:09
Dipende dal layout che hai scelto per il pannello. Se stai usando ad esempio un GridLayout, non sono ridimensionabili.

Se invece usi GridBagConstraints, la cosa fattibile tramite i metodi setSize, setPreferredSize, setMinimumSize, ecc. (sto andando a memoria, controlla prima di tentare - e poi sicuramente i metodi li conosci -). Con altri layout non mi ricordo, cmq nella documentazione mi sembra ci sia scritto.
Inoltre, con il GridBagConstraints puoi usare delle costanti che specificano se il componente deve riempire tutto lo spazio orizzontale o verticale della cella, o entrambi, ed il punto di ancoraggio.

Se vuoi ti mando un piccolo esempio...

:ciauz:

gxgijjy
30-06-2002, 22:25
Grazie per il tuo aiuto, gi conoscevo il gridbaglayout, ma non lo avevo mai usato. Guarda per questo esempio:

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

class grafica extends JFrame {
protected JTextField tIndirizzo;
protected JLabel lIndirizzo;
protected JTextField tFile;
protected JLabel lFile;
protected JTextArea testo;
public grafica() {
super("Grafica");
GridBagLayout gbl=new GridBagLayout();
testo=new JTextArea();
GridBagConstraints limiti=new GridBagConstraints();
buildConstraints(limiti, 0, 0, 1, 1, 100, 20);
lIndirizzo = new JLabel("Indirizzo");
gbl.setConstraints(lIndirizzo, limiti);
buildConstraints(limiti, 0, 1, 1, 1, 100, 20);
tFile=new JTextField(20);
tIndirizzo=new JTextField(20);
gbl.setConstraints(tIndirizzo, limiti);
buildConstraints(limiti, 1, 1, 1, 1, 100, 20);
gbl.setConstraints(tFile, limiti);
buildConstraints(limiti, 1, 0, 1, 1, 100, 20);
lFile = new JLabel("File");
gbl.setConstraints(lFile, limiti);
getContentPane().setLayout(gbl);
getContentPane().add(lIndirizzo);
getContentPane().add(lFile);
getContentPane().add(tIndirizzo);
getContentPane().add(tFile);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
pack();
}
void buildConstraints(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy) {
gbc.gridx=gx;
gbc.gridy=gy;
gbc.gridwidth=gw;
gbc.gridheight=gh;
gbc.weightx=wx;
gbc.weighty=wy;
}
public static void main(String argv[]) {
grafica a = new grafica();
}
}

Ingrandendo la finestra tutto si allontana, sapete come potrei mantenere tutto vicino? Se vuoi comunque mi puoi mandare esempi.
Ciao e grazie!

gxgijjy
30-06-2002, 22:26
Anzi mandali proprio questi esempi utilizzando le funzioni che hai citato :ciauz:

Pablob
30-06-2002, 22:45
Beh, un conto che ingrandendo la finestra si "allontanano", un conto ridimensionare i campi...

Dunque, per il problema dell'"allontanamento", non conosco la soluzione (l'unica che mi viene in mente JFrame.setResizable(false); )

Come se non bastasse, avevo letto male il tuo primo post. A te non interessa cambiare la dimensione da codice, ma renderli ridimensionabili in esecuzione... Giusto?

Sinceramente non credo si possa fare, comunque domani ci provo e ti faccio sapere.

Loading