PDA

Visualizza la versione completa : [JAVA] Informazioni pannelli


ombra
19-12-2005, 15:19
ciao a tutti
Per costruire maschere complete con molti oggetti, JTextfield, JLabel, JTextArea quale pannello mi consigliate? Con GridLayout, non si aggiustano bene i pannelli nella maschera, ho letto di GridBagLayout che ne pensate?
Qualche esempietto????!
Grazie :ciauz:

ombra
19-12-2005, 17:35
up :D

maurizio2
21-12-2005, 21:24
GridBagLayout e' il piu' complicato ma se lo conosci bene
e' in grado di sostituire qualunque LayoutManager
ma per layout semplici utilizza i FlowLayout o quello di
default in Jframe.
Cmq se hai molti componenti da inserire e desideri
avere il controllo su come tali componenti si devono
comportare durante la fase di ridimensionamento GridBagLayout
e' il maestro!!!!!
Ciao :ciauz:

maurizio2
21-12-2005, 21:28
import java.awt.Component;
import java.awt.Container;
import java.awt.GraphicsEnvironment;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Point;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/*
* GridBagDemo.java
*
* Created on 8 aprile 2005, 10.07
*/

/**
*
* @author mau
*/
public class GridBagDemo extends JFrame{
private Container container;
private GridBagLayout layout;
private GridBagConstraints constraints;
/** Creates a new instance of GridBagDemo */
public GridBagDemo() {
super("GridBagLayout");

container = getContentPane();
layout = new GridBagLayout();
container.setLayout(layout);

//istanzia l'oggetto GridBagConstraints
constraints = new GridBagConstraints();

//crea i componenti GUI
JTextArea textAre1 = new JTextArea("TextArea1", 5, 10);
JTextArea textAre2 = new JTextArea("TextArea2", 5, 4);

String names[] = {"Iron", "Steel", "Brass"};
JComboBox comboBox = new JComboBox(names);

JTextField textField = new JTextField("TextField");
JButton button1 = new JButton("Button 1");
JButton button2 = new JButton("Button 2");
JButton button3 = new JButton("Button 3");

//weightx e weighty per textAre1 sono entrambi 0: il valore di
//anchor per tutti i componenti e' CENTER(il valore di default)
constraints.fill = GridBagConstraints.BOTH;
addComponenet(textAre1, 0, 0, 1, 3);

//wheightx e wheighty per button1 sono entrambi 0(il valore di default)
constraints.fill = GridBagConstraints.HORIZONTAL;
addComponenet(button1 , 0, 1, 2, 1);

//weightx e weighty per comboBox sono entrambi 0(il valore di default)
//fill vale HORIZONTAL
addComponenet(comboBox, 2, 1, 2, 1);

//button2
constraints.weightx = 1000;//puo' diventare piu' largo
constraints.weighty = 1;//puo' diventare piu' alto
constraints.fill = GridBagConstraints.BOTH;
addComponenet(button2, 1, 1, 1, 1);

//fill vale BOTH per button3
constraints.weightx = 0;
constraints.weighty = 0;
addComponenet(button3, 1, 2, 1, 1);

//weightx e weighty per textField sono entrambi 0, fill vale BOTH
addComponenet(textField, 3, 0, 2, 1);

//weightx e weighty per textArea2 sono entrambi 0, fill vale BOTH
addComponenet(textAre2, 3, 2, 1, 1);

Point center = GraphicsEnvironment.getLocalGraphicsEnvironment(). getCenterPoint();
setBounds(center.x - 300/2, center.y - 150/2, 300, 150);
setVisible(true);
}//fine costruttore

private void addComponenet(Component component, int row, int column, int width, int height){

//imposta gridx e gridy
constraints.gridx = column;
constraints.gridy = row;

//imposta gridWidth e gridHeight;
constraints.gridwidth = width;
constraints.gridheight = height;

//imposta i vincoli e aggiunge i componeneti
layout.setConstraints(component, constraints);
container.add(component);

}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
GridBagDemo application = new GridBagDemo();
application.setDefaultCloseOperation(JFrame.EXIT_O N_CLOSE);
}

}

Matteo982
21-12-2005, 21:49
In alcuni casi se proprio non ti trovi con nessun Layout di quelli a disposizione puoi settarlo null e gestire tu uno ad uno posizione, e dimensione di ogni singolo componente!

Ciao. :ciauz:

ombra
21-12-2005, 22:38
vi ringrazio per le risposte...
ora provo l'esempio...
grazie mille :ciauz:

ombra
21-12-2005, 23:36
ottimo :) !!
HO bene o male capito il loro funzionamento, ho fatto un piccolo esercizio e mi è venuto!!!!!!! :unz:
Solo una cosetta, la JTextArea si può rendere "fissa" ???
Cioè se l'utente allarga la maschera, la JTextArea si allarga come fa ora, ma se io scrivo tante lettere di continuo tipo "ssssssssssssssssssssssssssss";
LA JTextArea si allarga con il testo, si può fare in modo che una volta che si raggiunga il limite della JTextarea il testo vada a capo?
Grazie davvero per l'esempio.. :ciauz:

ombra
21-12-2005, 23:38
centra qualcosa lo scroolpane????
grazie :ciauz:

FelixR
21-12-2005, 23:48
per fare andare il testo a capo

jtextarea.setLineWrap(true);

se metti la jtextarea dentro uno jscrollpane, quando la dimensione verticale o orizzontale del testo supera quelo della jtextarea, aggiunge una barra di scorrimento in verticale o in orizzontale, proprio come quando tu scrolli la pagina in basso per vedere quello che c'è sotto.

ombra
21-12-2005, 23:49
Originariamente inviato da FelixR
per fare andare il testo a capo

jtextarea.setLineWrap(true);

se metti la jtextarea dentro uno jscrollpane, quando la dimensione verticale o orizzontale del testo supera quelo della jtextarea, aggiunge una barra di scorrimento in verticale o in orizzontale, proprio come quando tu scrolli la pagina in basso per vedere quello che c'è sotto.

perfettoq uello che mi serviva!!
Grazie :ciauz:

Loading