Gå til innhold

et litr spørsmål om JTabbedPane


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av tommy18
Lenke til kommentar

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

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

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...