tommy18 Skrevet 6. april 2005 Del Skrevet 6. april 2005 Når man trykker på en tab, så åpnes en layer, det er greit. Men er det mulig at det da i den layeren (som er en JPanel) er enda flere tabs ? Har prøvd å lage en ny JTabbedPane og legge den til i den layeren som åpnes, men uten hell. Noen som har kode for dette? link? Lenke til kommentar
Patton Skrevet 6. april 2005 Del Skrevet 6. april 2005 Slik mener du? public class Test_JTabbedPane { public static void main(String[] args) { JFrame frame = new JFrame(); JTabbedPane pane = new JTabbedPane(); frame.getContentPane().add(pane); JTabbedPane innerPane = new JTabbedPane(); JPanel jPanel = new JPanel(); jPanel.add(new JButton("Knapp")); innerPane.addTab("innerpane jPanel",jPanel); innerPane.addTab("Empty panel",new JPanel()); pane.addTab("Inner pane",innerPane); pane.addTab("Empty panel",new JPanel()); frame.pack(); frame.setVisible(true); } } Lenke til kommentar
tommy18 Skrevet 6. april 2005 Forfatter Del Skrevet 6. april 2005 (endret) Ja, akkurat sånn Men den GUI-klassen jeg vil bli veldig stor, skal jeg likevel ha hele GUI'et i en klasse, eller skal jeg dele det opp, slik at f.eks hver fane har sin egen klasse? Vil gjerne gjøre dette "riktig" :-) Endret 6. april 2005 av tommy18 Lenke til kommentar
Patton Skrevet 6. april 2005 Del Skrevet 6. april 2005 Hver fane i en egen klasse er i nesten alle tilfeller (99.9%) den beste maaten aa implementere dette paa. Koden blir ryddig og oversiktlig, og det er lettere aa flytte panelene "rundt omkring". Lenke til kommentar
tommy18 Skrevet 8. april 2005 Forfatter Del Skrevet 8. april 2005 Nå har hver fane sin egen klasse, og koden ser mye ryddigere ut :-) Et lite spørsmål: F.eks fanen RegistrerBil, der brukeren skriver inn alle opplysningene om en bil, og til slutt trykker på knappen "Registrer Bil", skal lytteobjektet til knappen ligge i RegistrerBil klassen? Eller pleier man å gjøre dette på en annen måte? Lenke til kommentar
buskmann Skrevet 8. april 2005 Del Skrevet 8. april 2005 Det vanlige er å la klassen selv gjøre det, hvis du ikke skal bruke den samme lytteren flere steder. Lenke til kommentar
tommy18 Skrevet 9. april 2005 Forfatter Del Skrevet 9. april 2005 Er noe rart her, når jeg i den ene faneklassen bruker GridBagLayot, så blir alle komponenter lagt helt i CENTER. Faneklassen exteds JPanel. Skjønner ikke hva som er galt, velger row/column 0 på knapper som skal addes til panelet , men den blir likevel lagt til i CENTER. Feilen må ligge i at JPanelet ikke dekker hele vinduet, men bare helt i center. Er det mulig å få maksimert dette på noe vis? Lenke til kommentar
Patton Skrevet 9. april 2005 Del Skrevet 9. april 2005 Komponentene maa ha GridBagConstraint.fill = GridBagConstraint.BOTH, GridBagConstraint.weightx = 1 & GridBagConstraint.weighty = 1. Lenke til kommentar
tommy18 Skrevet 9. april 2005 Forfatter Del Skrevet 9. april 2005 Koden under er bare en knapp som blir satt helt venstre hjørne øverst...bare for test. Men fremdeles får jeg ikke brutk gridx og gridy til å sette posisjonen for knappen, så det ser ut som hele vinduet bare er en eneste rad og kolonne. Skriver jeg 100 på gridx eller 1 spiller det ingen rolle. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Panel extends JPanel { private JButton button1, button2, button3, button4; public Panel() { button1 = new JButton(); GridBagLayout layout = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints(); setLayout( layout ); //button1 constraints.fill = GridBagConstraints.BOTH; constraints.gridx = 0; constraints.gridy = 0; layout.setConstraints( button1, constraints ); add(button1, constraints); } } Lenke til kommentar
buskmann Skrevet 9. april 2005 Del Skrevet 9. april 2005 Dette fungerer her hos meg, kanskje det kan gi noen hint: /** * * @return Et JPanel med felter for navn og poeng. */ private JPanel lagFelter(){ JPanel jp = new JPanel(); jp.setBackground(new Color(230,230,250)); jp.setLayout(new GridBagLayout()); /* Brukes i poengfelter, aksepterer bare tall */ NumberFormat poengformat = NumberFormat.getNumberInstance(); for (int i = 0; i < antallSpillere; i++) { GridBagConstraints c = new GridBagConstraints(); /* Spillernavn */ JLabel jl = new JLabel(spillerNavn[i]); c.gridheight = 1; c.gridwidth = 2; c.gridx = 2*i; c.gridy = 0; c.insets = new Insets(5,0,0,0); jp.add(jl,c); /* Poengfelter */ c.gridy = 1; c.insets = new Insets(5,5,5,5); poengFelter[i] = new JFormattedTextField(poengformat); poengFelter[i].setColumns(5); poengFelter[i].addPropertyChangeListener("value", this); jp.add(poengFelter[i],c); } return jp; } 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å