Dla mojej klasy CSE 205 (Java programming 2) musimy zaprojektować prosty applet GUI. Jestem dość obeznany z Swingiem, wykorzystałem go wcześniej do kilku własnych projektów. Mam zaprojektowany program z kilkoma problemami, a to wygląda idealnie na moim komputerze po uruchomieniu z Eclipse:Dlaczego mój interfejs użytkownika traci formatowanie po uruchomieniu w przeglądarce lub uruchomieniu na moim komputerze (Java Swing)?
Ale kiedy mam złożyć go w Internecie, gdzie działa w przeglądarce, UI dostaje poważnie obłąkany, wracając z powrotem do ustawień:
ja przyzwyczaili się do korzystania z GridBagLayout ze względu na jego prostotę. Właśnie tego tutaj używam. Klasy CreatePanel i SelectPanel (jak widać na pierwszym obrazku) obaj rozszerzają JPanel (jak na mojego profesora). Ustawić każdy przy użyciu:
this.setLayout(new GridBagLayout());
I i elementy do siebie przez:
//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);
}
Ktoś ma jakieś pomysły co może być grane? Biorąc pod uwagę, że ponad połowa czasu spędziłem na poprawianiu wyglądu układów, bardzo chciałbym prostą poprawkę. W razie potrzeby mogę dodać więcej kodu. Dzięki za wszelkie sugestie.
--EDIT--
Dobrze zrobiłem trochę zabawy oparte na użytkownika @ MadProgrammer sugestie. Myślę, że w pewnym sensie zawęziłem problem.
Jest to kod używam ustawić rozmiar JTextField na prawo od etykiety „Enter a Pet Typ:
petTypeTF = new JTextField("");
petTypeTF.setPreferredSize(new Dimension(125, 60));
Teraz, jeśli mogę zmienić kod do niczego innego, jak ustawienie liczba kolumn:
petTypeTF = new JTextField("",12);
petTypeTF.setPreferredSize(new Dimension(125, 60));
dostaję UI że wygląda identycznie jak ten, kiedy złożyć go w Internecie coś wspólnego z ustawieniem liczba kolumn wydaje się być przykręcenie go Czy to pomoże sprowadzić do.. ktoś?
Wiele powodów. Wyobrażam sobie, że te pola nie zostały utworzone z domyślnymi kolumnami (i wierszami w przypadku obszaru tekstowego). Może być menedżerem układu, który został użyty do umieszczenia panelu na karcie ... – MadProgrammer
Bałem się czegoś takiego. Czy masz jakieś sugestie, które mógłbym spróbować? – rphello101
Trudno jest na przykładzie pracować, ale ... upewnij się, że komponenty tekstowe są tworzone z wartościami kolumny/wiersza. Użyj elementu 'BorderLayout', aby umieścić komponent na karcie i nadaj większą wagę ograniczeniom do obszaru tekstowego – MadProgrammer