我希望我能做到这一点,首先在这里发帖。我只用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 );
}
}
}
答案 0 :(得分:1)
您的问题在于knopHandler
:
JPanel uitvoerpanel = new JPanel();
您只是在创建一个新的JPanel;你真的想要创建一个新的uitvoerpanel
。因为它扩展了JPanel,所以你可以这样做:
JPanel uitvoerpanel = new uitvoerpanel();
这将解决您提到的问题。但是,您应该了解Java naming conventions。它将使您的代码更容易阅读。