按钮事件后,第二个面板为空

时间:2017-06-22 10:28:50

标签: java swing

我希望我能做到这一点,首先在这里发帖。我只用Java编程了几个星期,所以这可能很简单,但我无法弄明白,我试过我的java书,youtube,google。我有一个带有文本字段和一个按钮的面板,按下按钮后,新面板应显示其他一些文本字段。单击按钮时,新面板会显示,只有它保持为空。我猜我必须将一些代码放在不同的位置才能实际显示?任何帮助将不胜感激,我希望代码是可读的,我不明白我在哪里出错了所以认为最好完全添加它。

 import javax.swing.*;
 import java.awt.event.*;
 import java.awt.*;

public class java03 extends JFrame 
{

public static void main ( String args[] ) 
    {
        JFrame frame1 = new java03();
        frame1.setSize ( 600, 500 );
        frame1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame1.setTitle( "Hour Registration" );
        JPanel paneel = new Paneelinvoer();
        frame1.setContentPane( paneel );
        frame1.setVisible ( true );

}
}

class Paneelinvoer extends JPanel
{
private JTextField naaminvoer, badgeinvoer;
private JTextField maandaginvoer, dinsdaginvoer, woensdaginvoer, donderdaginvoer, vrijdaginvoer, zaterdaginvoer, zondaginvoer;
private JLabel naam, badge, uren;
private JLabel maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag, zondag;
private JButton knop;

public Paneelinvoer()
{
    setLayout( null );

    //tekstvakken
    naaminvoer = new JTextField( 40 );
    naaminvoer.setHorizontalAlignment ( JTextField.LEFT );

    badgeinvoer = new JTextField( 4 );
    badgeinvoer.setHorizontalAlignment ( JTextField.LEFT );

    maandaginvoer = new JTextField( 2 );
    maandaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    dinsdaginvoer = new JTextField( 2 );
    dinsdaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    woensdaginvoer = new JTextField( 2 );
    woensdaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    donderdaginvoer = new JTextField( 2 );
    donderdaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    vrijdaginvoer = new JTextField( 2 );
    vrijdaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    zaterdaginvoer = new JTextField( 2 );
    zaterdaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    zondaginvoer = new JTextField( 2 );
    zondaginvoer.setHorizontalAlignment ( JTextField.LEFT );

    //labels
    naam = new JLabel ( "Naam:" );
    badge = new JLabel ( "Badgenummer:" );
    uren = new JLabel ( "Uren" );
    maandag = new JLabel ( "Maandag" );
    dinsdag = new JLabel ( "Dinsdag" );
    woensdag = new JLabel ( "Woensdag" );
    donderdag = new JLabel ( "Donderdag" );
    vrijdag = new JLabel ( "Vrijdag" );
    zaterdag = new JLabel ( "Zaterdag" );
    zondag = new JLabel ( "Zondag" );

    //knoppen
    knop = new JButton ( "Accept" );
    knop.addActionListener ( new knopHandler () );

    //plaats en afmetingen
    naam.setBounds( 20, 20, 120, 20 );
    naaminvoer.setBounds( 140, 20, 90, 20 );

    badge.setBounds( 20, 50, 120, 20 );
    badgeinvoer.setBounds( 140, 50, 90, 20 );

    uren.setBounds ( 190, 100, 90, 20 );

    maandag.setBounds( 20, 120, 120, 20 );
    maandaginvoer.setBounds( 160, 120, 90, 20 );

    dinsdag.setBounds( 20, 160, 120, 20 );
    dinsdaginvoer.setBounds( 160, 160, 90, 20 );

    woensdag.setBounds( 20, 200, 120, 20 );
    woensdaginvoer.setBounds( 160, 200, 90, 20 );

    donderdag.setBounds( 20, 240, 120, 20 );
    donderdaginvoer.setBounds( 160, 240, 90, 20 );

    vrijdag.setBounds( 20, 280, 120, 20 );
    vrijdaginvoer.setBounds( 160, 280, 90, 20 );

    zaterdag.setBounds( 20, 320, 120, 20 );
    zaterdaginvoer.setBounds( 160, 320, 90, 20 );

    zondag.setBounds( 20, 360, 120, 20 );
    zondaginvoer.setBounds( 160, 360, 90, 20 );

    knop.setBounds ( 100, 400, 100, 20 );

    //voeg componenten toe
    add ( naaminvoer );
    add ( badgeinvoer );
    add ( naam );
    add ( badge );
    add ( uren );
    add ( maandag );
    add ( dinsdag );
    add ( woensdag );
    add ( donderdag );
    add ( vrijdag );
    add ( zaterdag );
    add ( zondag );
    add ( maandaginvoer );
    add ( dinsdaginvoer );
    add ( woensdaginvoer );
    add ( donderdaginvoer );
    add ( vrijdaginvoer );
    add ( zaterdaginvoer );
    add ( zondaginvoer );
    add ( knop );
}

class knopHandler implements ActionListener
{
    public void actionPerformed ( ActionEvent e )
    {
        JFrame frame2 = new JFrame ( "Total Hours" );
        frame2.setSize ( 600, 500 );
        JPanel uitvoerpanel = new JPanel();
        frame2.setContentPane( uitvoerpanel );
        frame2.setVisible( true );
        String invoerstring1 = maandaginvoer.getText();
        int getal1 = Integer.parseInt( invoerstring1 );

        String invoerstring2 = dinsdaginvoer.getText();
        int getal2 = Integer.parseInt( invoerstring2 );

        String invoerstring3 = woensdaginvoer.getText();
        int getal3 = Integer.parseInt( invoerstring3 );

        String invoerstring4 = donderdaginvoer.getText();
        int getal4 = Integer.parseInt( invoerstring4 );

        String invoerstring5 = vrijdaginvoer.getText();
        int getal5 = Integer.parseInt( invoerstring5 );

        String invoerstring6 = zaterdaginvoer.getText();
        int getal6 = Integer.parseInt( invoerstring6 );

        String invoerstring7 = zondaginvoer.getText();
        int getal7 = Integer.parseInt( invoerstring7 );

        int resultaat = getal1 + getal2 + getal3 + getal4 + getal5 + getal6 + getal7;





    } 
}

class uitvoerpanel extends JPanel

{ 
 private JTextField naamvak, badgevak, totaalurenvak;
 private JLabel naam, badge, totaaluren;

 public uitvoerpanel()
 {
 setLayout( null );

naamvak = new JTextField ( 20 );
naamvak.setHorizontalAlignment ( JTextField.LEFT );
naamvak.setEditable ( false );

badgevak = new JTextField ( 20 );
badgevak.setHorizontalAlignment ( JTextField.LEFT );
badgevak.setEditable ( false );

totaalurenvak = new JTextField ( 20 );
totaalurenvak.setHorizontalAlignment ( JTextField.LEFT );
totaalurenvak.setEditable ( false );

naam = new JLabel ( "Naam:" );
badge = new JLabel ( "Badgenummer:" );
totaaluren = new JLabel ( "Totaal gewerkte uren:" );

naam.setBounds ( 50,50, 90, 20 );
naamvak.setBounds ( 160, 50, 90, 20);

badge.setBounds ( 50, 90, 90, 20 );
badgevak.setBounds ( 160, 90, 90, 20 );

totaaluren.setBounds ( 50, 130, 90, 20 );
totaalurenvak.setBounds ( 160, 130, 90, 20 );

add ( naamvak );
add ( badgevak );
add ( totaalurenvak );
add ( naam );
add ( badge );
add ( totaaluren );
}
}
}

1 个答案:

答案 0 :(得分:1)

您的问题在于knopHandler

JPanel uitvoerpanel = new JPanel();

您只是在创建一个新的JPanel;你真的想要创建一个新的uitvoerpanel。因为它扩展了JPanel,所以你可以这样做:

JPanel uitvoerpanel = new uitvoerpanel();

这将解决您提到的问题。但是,您应该了解Java naming conventions。它将使您的代码更容易阅读。