Avatar billede hans1000 Nybegynder
15. december 2003 - 19:27 Der er 12 kommentarer og
1 løsning

Kalde et andet JPanel med en JButton

Hejsa
1) Hvad skal der tilføres af kode for at eks. vis JButton1 kan kalde Jpanel2 frem ?

Hvis det er muligt, må i meget gerne beskrive hvad der sker i fagprosa, da jeg har noget besvær med at forstå hvordan det virker med events og listeners

Kan jeg nemt fjerne main metoden? Den har jeg i en kontrolklasse

Koden er lavet i Sun One Studio 5 form editor

Koden ser sådan her ud:

public class GUI1 extends javax.swing.JFrame {
   
    /** Creates new form GUI1 */
    public GUI1() {
        initComponents();
    }
   
  private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jButton5 = new javax.swing.JButton();
        jPanel4 = new javax.swing.JPanel();
        jTextField1 = new javax.swing.JTextField();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        jTextField2 = new javax.swing.JTextField();
        jButton8 = new javax.swing.JButton();
        jTextField3 = new javax.swing.JTextField();
        jTextField4 = new javax.swing.JTextField();
        jTextField5 = new javax.swing.JTextField();
        jTextField6 = new javax.swing.JTextField();
        jTextField7 = new javax.swing.JTextField();
        jComboBox1 = new javax.swing.JComboBox();
        jComboBox2 = new javax.swing.JComboBox();
        jPanel7 = new javax.swing.JPanel();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        jCheckBox3 = new javax.swing.JCheckBox();
        jCheckBox4 = new javax.swing.JCheckBox();
        jCheckBox5 = new javax.swing.JCheckBox();
        jPanel8 = new javax.swing.JPanel();
        jButton9 = new javax.swing.JButton();

        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentHidden(java.awt.event.ComponentEvent evt) {
                formComponentHidden(evt);
            }
        });
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel1.setBorder(new javax.swing.border.EtchedBorder());
        jButton1.setText("<html><center>Medlems<br>administration</center></html>");
        jPanel1.add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(11, 18, 120, 60));

        jButton2.setText("<html><center>\u00d8konomi<br>styring</center></html>");
        jPanel1.add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 100, 120, 60));

        jButton3.setText("<html><center>Hold<br>resultater</center></html>");
        jPanel1.add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 180, 120, 60));

        jButton4.setText("<html><center>Medlems<br>administration</center></html>");
        jPanel1.add(jButton4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 370, 120, 60));

        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(1, 0, 140, 440));

        jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel2.setBorder(new javax.swing.border.TitledBorder(""));
        jPanel3.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel3.setBorder(new javax.swing.border.TitledBorder("Nyt medlem"));
        jButton5.setText("Opret");
        jPanel3.add(jButton5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, 70, -1));

        jPanel2.add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(9, 11, 90, 80));

        jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel4.setBorder(new javax.swing.border.TitledBorder("S\u00f8g eksisterende"));
        jTextField1.setText("Medlems Nr");
        jPanel4.add(jTextField1, new org.netbeans.lib.awtextra.AbsoluteConstraints(8, 19, 110, -1));

        jButton6.setText("S\u00f8g");
        jPanel4.add(jButton6, new org.netbeans.lib.awtextra.AbsoluteConstraints(127, 19, 80, 20));

        jButton7.setText("Vis Alle");
        jPanel4.add(jButton7, new org.netbeans.lib.awtextra.AbsoluteConstraints(126, 47, 80, 20));

        jPanel2.add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 10, 220, 80));

        getContentPane().add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(140, -1, 480, 100));

        jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel5.setBorder(new javax.swing.border.EtchedBorder());
        jPanel6.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel6.setBorder(new javax.swing.border.TitledBorder("Indtast medlems oplysninger"));
        jTextField2.setText("jTextField2");
        jPanel6.add(jTextField2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 21, 150, 20));

        jButton8.setText("Kontrol");
        jPanel6.add(jButton8, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 50, 80, 20));

        jTextField3.setEditable(false);
        jTextField3.setText("Navn");
        jPanel6.add(jTextField3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 80, 150, -1));

        jTextField4.setEditable(false);
        jTextField4.setText("Adresse");
        jPanel6.add(jTextField4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 110, 150, -1));

        jTextField5.setEditable(false);
        jTextField5.setText("Post nr");
        jPanel6.add(jTextField5, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 140, 50, -1));

        jTextField6.setEditable(false);
        jTextField6.setText("Telefon");
        jPanel6.add(jTextField6, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 170, 150, -1));

        jTextField7.setEditable(false);
        jTextField7.setText("By");
        jPanel6.add(jTextField7, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 140, 100, -1));

        jPanel6.add(jComboBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 50, 130, 20));

        jPanel6.add(jComboBox2, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 20, 130, 20));

        jPanel5.add(jPanel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 6, 320, 210));

        jPanel7.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel7.setBorder(new javax.swing.border.TitledBorder("Sv\u00f8mme discipliner"));
        jCheckBox1.setText("jCheckBox1");
        jPanel7.add(jCheckBox1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 20, -1, -1));

        jCheckBox2.setText("jCheckBox2");
        jPanel7.add(jCheckBox2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 50, -1, -1));

        jCheckBox3.setText("jCheckBox3");
        jPanel7.add(jCheckBox3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 80, -1, -1));

        jCheckBox4.setText("jCheckBox4");
        jPanel7.add(jCheckBox4, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 20, -1, -1));

        jCheckBox5.setText("jCheckBox5");
        jPanel7.add(jCheckBox5, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 50, -1, -1));

        jPanel5.add(jPanel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 220, 320, 110));

        getContentPane().add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(139, 99, 343, 341));

        jPanel8.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel8.setBorder(new javax.swing.border.EtchedBorder());
        jButton9.setText("Tilbage");
        jPanel8.add(jButton9, new org.netbeans.lib.awtextra.AbsoluteConstraints(9, 389, 120, 40));

        getContentPane().add(jPanel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 100, 140, 340));

        pack();
    }

    private void formComponentHidden(java.awt.event.ComponentEvent evt) {
        // Add your handling code here:
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        new GUI1().show();
    }
   
   
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JCheckBox jCheckBox3;
    private javax.swing.JCheckBox jCheckBox4;
    private javax.swing.JCheckBox jCheckBox5;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    // End of variables declaration
   
}
Avatar billede _carsten Nybegynder
15. december 2003 - 19:36 #1
jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jPanel2.setVisible(true);            }
        });

Burde gøre det
Avatar billede arne_v Ekspert
15. december 2003 - 19:36 #2
Du kan bare fjerne din main metode og lade en ande klasse kalde

new GUI1().show();
Avatar billede arne_v Ekspert
15. december 2003 - 19:39 #3
En listener klasse er bare en klasse som har en metode med et bestemt
navn og når man tilføjer en listener til noget så kalder Swing metoden
i den klasse når en event som f.eks. muse klik på button sker.
Avatar billede _carsten Nybegynder
15. december 2003 - 19:53 #4
Hvis jeg var dig ville jeg overveje at bruge en kombination af GridLayout og GridBagLayout, det vil være væsentlig bedre, FlowLayout kunne også komme på tale i nogle af panelerne
Avatar billede hans1000 Nybegynder
15. december 2003 - 19:59 #5
Hvor i koden skal jeg skrive at JPanel ikke er synligt til at starte med?

Jeg giver carsten points, og så opretter jeg et nyt spg. som arne v kan skrive i, så får i begge points
Avatar billede hans1000 Nybegynder
15. december 2003 - 20:05 #6
_carsten : det ville jeg også gerne, men det andet er så dejligt nemt i en form editor, da man så bare kan plante tingende som man vil.

Hvis du skulle komme med et forslag, hvor ville du så benytte andre layouts i steddet for dem der er der nu?
Avatar billede _carsten Nybegynder
15. december 2003 - 20:08 #7
Nu er jeg lige pludselig ikke helt med, det skulle gerne være synligt fra starten, medmindre det ligger under et af de andre
Hvis det tilfældet bliver du nødt til at skjule det som ligger øverst

Du skal tilføje den her

  jButton1.setText("<html><center>Medlems<br>administration</center></html>");
  jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jPanel2.setVisible(true);            }
        });
Avatar billede hans1000 Nybegynder
15. december 2003 - 20:18 #8
_carsten: Måske er det mig der udtrykker mig forkert, jeg har et Jpanel med en Jbutton, dette er synligt når programmet startes op, når man så trykker på Jbutton, skal der komme et andet Jpanel frem ved siden af, så der nu er to synlige Jpanels
Avatar billede arne_v Ekspert
15. december 2003 - 20:21 #9
Jeg er helle rikke så begejstret for det layout.

Jeg aner ikke hvordan det ser ud.

Men det er jo en NetBeans specifik klasse d.v.s. at koden
kan så ikke compiles udenfor NetBeans.

Jeg ville holde mig til standard klasserne.
Avatar billede _carsten Nybegynder
15. december 2003 - 20:21 #10
Så er du nødt at bruge

getContentPane().add(nytPanel, new org.netbeans.lib.awtextra.AbsoluteConstraints(x, y, x1, y1));
Avatar billede hans1001 Nybegynder
15. december 2003 - 20:29 #11
til arne_v
http://www.eksperten.dk/spm/440318

Jeg vil prøve at lave de layout om, så det bliver en mere "ren" kode at se på
Avatar billede _carsten Nybegynder
15. december 2003 - 20:39 #12
Du får lige et hurtigt løsningsforslag, prøv at rezise det, så du kan se hvorfan det arbejder i f.h.t. dit

Iøvrigt ville jeg lave de paneler som selvstændige klasser og derefter til dem til framen

public class Exp1 extends javax.swing.JFrame {

    public Exp1() {
        initComponents();
    }
   
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        vPanel1 = new VPanel();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();

        getContentPane().setLayout(new java.awt.GridBagLayout());

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridheight = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        getContentPane().add(vPanel1, gridBagConstraints);

        jPanel1.setBackground(new java.awt.Color(102, 102, 255));
        jPanel1.setMinimumSize(new java.awt.Dimension(125, 125));
        jPanel1.setPreferredSize(new java.awt.Dimension(125, 125));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.01;
        gridBagConstraints.weighty = 0.01;
        getContentPane().add(jPanel1, gridBagConstraints);

        jPanel2.setBackground(new java.awt.Color(255, 102, 102));
        jPanel2.setMinimumSize(new java.awt.Dimension(125, 125));
        jPanel2.setPreferredSize(new java.awt.Dimension(125, 125));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.01;
        gridBagConstraints.weighty = 0.01;
        getContentPane().add(jPanel2, gridBagConstraints);

        jPanel3.setBackground(new java.awt.Color(102, 255, 51));
        jPanel3.setMinimumSize(new java.awt.Dimension(125, 125));
        jPanel3.setPreferredSize(new java.awt.Dimension(125, 125));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.01;
        gridBagConstraints.weighty = 0.01;
        getContentPane().add(jPanel3, gridBagConstraints);

        jPanel4.setBackground(new java.awt.Color(153, 153, 255));
        jPanel4.setMinimumSize(new java.awt.Dimension(120, 370));
        jPanel4.setPreferredSize(new java.awt.Dimension(120, 370));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridheight = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.01;
        gridBagConstraints.weighty = 0.01;
        getContentPane().add(jPanel4, gridBagConstraints);

        pack();
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new Exp1().show();
    }

    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private VPanel vPanel1; 
}
Avatar billede hans1001 Nybegynder
15. december 2003 - 20:55 #13
takker, ser nærmere på det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester