Per la mia classe CSE 205 (Java programming 2), dobbiamo progettare una semplice applet GUI. Ho una certa familiarità con Swing, l'ho usato per alcuni dei miei progetti in anticipo. Ho progettato il programma con pochi problemi, e sembra perfetto sul mio computer quando viene eseguito da Eclipse:Perché la mia interfaccia utente perde la formattazione quando viene eseguito in-browser o eseguito sul mio computer (Java Swing)?
Ma quando ho avuto modo di inviare online, dove si corre in del browser, l'interfaccia utente ottiene gravemente demente, tornando di nuovo a difetto:
mi sono abituato ad usare il GridBagLayout grazie alla sua semplicità. Questo è quello che sto usando qui. Le classi CreatePanel e SelectPanel (come si vede nella prima immagine) entrambe estendono JPanel (come da mio professore). Ho impostato ogni utilizzo:
this.setLayout(new GridBagLayout());
E ed i componenti ad ogni secondo:
//Call the method addItem() to add the create button to the panel
addItem(this, createB,0,2,2,1,defaultInset,GridBagConstraints.CENTER);
//-------
public void addItem(JPanel p, JComponent c, int x, int y, int width, int height, int[] inset, int align)
{
GridBagConstraints gc = new GridBagConstraints();
gc.gridx = x;
gc.gridy = y;
gc.gridwidth = width;
gc.gridheight = height;
gc.weightx = 0;
gc.weighty = 0;
gc.insets = new Insets(inset[0],inset[1],inset[2],inset[3]);
gc.anchor = align;
gc.fill = GridBagConstraints.NONE;
p.add(c, gc);
}
Qualcuno ha qualche idea di quello che potrebbe essere in corso? Considerando che più della metà del mio tempo è stato dedicato all'ottimizzazione dei layout, mi piacerebbe una soluzione semplice. Posso pubblicare più codice se necessario. Grazie per eventuali suggerimenti.
--EDIT--
Va bene che ho fatto un po 'di gioco intorno sulla base di @ MadProgrammer suggerimenti. Penso di aver ristretto il punto in cui il problema è.
Questo è il codice che sto usando per impostare la dimensione della JTextField alla destra dell'etichetta "Inserire un tipo di animali domestici:
petTypeTF = new JTextField("");
petTypeTF.setPreferredSize(new Dimension(125, 60));
Ora se cambio il codice a qualsiasi altra cosa, come l'impostazione del numero di colonne:
petTypeTF = new JTextField("",12);
petTypeTF.setPreferredSize(new Dimension(125, 60));
ottengo un'interfaccia utente che sembra identico a quello quando ho inviala online Qualcosa a che fare con l'impostazione del numero di colonne sembra essere l'avvitamento in su questo aiuta a restringere verso il basso per.. chiunque?
Un sacco di motivi. Immagino che i campi non siano stati creati con colonne predefinite (e righe nel caso dell'area di testo). Potrebbe essere il gestore di layout che è stato utilizzato per posizionare il riquadro sulla scheda ... – MadProgrammer
Avevo paura di qualcosa del genere. Hai qualche suggerimento che potrei provare? – rphello101
È difficile escludere un esempio con cui lavorare, ma ... assicurarsi che i componenti del testo vengano creati con valori di colonna/riga. Usa un 'BorderLayout' per posizionare il componente sulla scheda e dare un peso maggiore ai vincoli all'area di testo – MadProgrammer