Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12

    [java] interfaccia grafica

    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!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328
    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...

    Il programmatore lo vedi dal coraggio, dall'altruismo, dalla fantasia...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12
    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!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12
    Anzi mandali proprio questi esempi utilizzando le funzioni che hai citato

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    328
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.