nebzen Skrevet 21. mars 2006 Del Skrevet 21. mars 2006 (endret) hei kort versjon: hvorfor virker ikke gridbaglayouten, når både borderlayot, gridlayout eller boxlayout virker?(gridbaglayouten oppfører seg som om det ikke skulle vært lagt til noe layout) har laget et jpanel(mittPanel). Inni det vil jeg ha en del andre jpanel(panel2, men her i eksempelet har jeg bare 1).inni panel2 vil jeg ha flere jpanel, så jeg har laget et metode(createPanel) som returnerer et jpanel som jeg legger til i panel2.(dett gjøres 4 ganger). Problemet er at når dette vises så virker ikke gridbaglayouten på jlabelene som blir lagt til panelene som lages i metoden createPanel. Alt vises i en linje på skjermen. Men dersom jeg endrer layouoten(inne i metoden createPanel) til borderlayot,gridlayout eller boxlayout så virker de. noen som kan hjelpe? noen som har noen tips? her er koden: public class mittPanel extends JPanel { private JPanel panel; private JPanel panel2; private JPanel panel3; public mittPanel(){ panel = new JPanel(); panel2 = new panel2(); //setter gridbaglayout her, for å kunne legge til andre panel senere setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.ipadx = 0; c.ipady = 0; panel.add(panel2,c); //lager scrollingen setBackground(new Color(255,255,255)); JScrollPane jscrollPane = new JScrollPane(panel); jscrollPane.getVerticalScrollBar().setUnitIncrement(10); jscrollPane.getHorizontalScrollBar().setUnitIncrement(10); setLayout(new BorderLayout()); add(panel,BorderLayout.WEST); add(jscrollPane,BorderLayout.CENTER); } } //*********************************************************************************** public class panel2 extends JPanel { private JPanel p; private JPanel p2; private JPanel p3; private JPanel p4; public panel2(){ p = createPanel("tekst", "bilde.jpg"); p2 = createPanel("tekst2", "bilde.jpg"); p3 = createPanel("tekst2", "bilde.jpg"); p4 = createPanel("tekst2", "bilde.jpg"); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); add(p); add(p2); add(p3); add(p4); } } //********************************************************************** public class CreatePanel extends JPanel { public CreatePanel(){}//tom konstruktor public static JPanel createPanel(String navn, String bilde){ //har egentlig flere jlabels her, men for eksempelet skyld, har jeg utelatt de Jpanel panel = new JPanel(); JLabel navn = new JLabel(navn); Url bildeUrl = this.class.getResource(bilde); JLabel bildeLabel = new JLabel(bildeIcon = new ImageIcon(bildeUrl)); panel.setBackground(new Color(255,255,255)); panel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.ipadx = 0; c.ipady = 0; panel.add(navn,c); c.ipadx = 1; c.ipady = 0; panel.add(bildeLabel,c); return panel; } Endret 23. mars 2006 av nebzen Lenke til kommentar
nebzen Skrevet 22. mars 2006 Forfatter Del Skrevet 22. mars 2006 dersom jeg kommenterer vekk panel.setLayout(new GridBagLayout());, så skjer det ingen forrandring. men dersom jeg skriver panel.setLayout(new BoxLayout(panel,boxlayout.y_axis)); så virker det helt fint hva er det jeg gjør galt? Lenke til kommentar
nebzen Skrevet 23. mars 2006 Forfatter Del Skrevet 23. mars 2006 som homer ville ha sagt det : DO'H!! burde brukt c.gridx = 0; c.gridy = 0; isteden for c.ipadx = 0; c.ipady = 0; Lenke til kommentar
blackbrrd Skrevet 30. mars 2006 Del Skrevet 30. mars 2006 Jeg vil på dette tidspunktet anbefale deg å finne deg en gui editor. JBuilder foundation har en god en. Det er selvfølgelig noen triks å lære seg når man skal designe med gridbaglayout dog.. a) start med et panel du setter xylayout på b) legg ut knapper, labeler, scrollpanes, etc ut sånn som du vil at de skal ligge c) bytt til gridbaglayout - jbuilder gjør om for deg! Fett! d) våkne opp og innse at nå er det brukt insets etc, etc.. sett padding/insets til 0 ved å velge alle komponentene og høyreklikke og velge constraints. d) sett weight = 1.0 på x og y ettersom det passer og growth til horizontal, eller both alt ettersom. (Viktig! hvis du har 0 i x weight og grow horizontal, så fungerer det ikke, du må ha satt en verdi større enn 0). Du har nå et gridbaglayout der ting vokser som de skal og du kan slippe unna masse nøstede paneler - ihvertfall til en hvis grad. Noen ganger er det enklere å legge til et panel og så legge til f.eks knapper til en toolbar... Hvis du i gui designeren dobbeltklikker på en knapp vil den lage metoden som vil bli kallt hvis knappen blir dobbeltklikket på. - Har sett at nyere Jbuildere er satt opp til å lage en indre klasse, ikke en indre anonym klasse, noe jeg synes er irriterende. Det går det an å endre på i settings Send meg en pm hvis du lurer på noe og jeg ikke svarer i denne tråden. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå