所以我有两个不同的面板,第一个面板的工作方式应该是这样,但可能需要Actionlistener来解决我的问题:
class knopHandler implements ActionListener
{
public void actionPerformed ( ActionEvent e )
{
JFrame frame2 = new JFrame ( "Total Hours" );
frame2.setSize ( 600, 500 );
JPanel uitvoerpanel = new uitvoerpanel();
frame2.setContentPane( uitvoerpanel );
frame2.setVisible( true );
frame1.setVisible( false );
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;
}
}
第二个小组的相关部分如下所示:
public uitvoerpanel()
{
setLayout( null );
naamvak = new JTextField ( 20 );
naamvak.setHorizontalAlignment ( JTextField.LEFT );
naamvak.setEditable ( false );
naamvak.setText( naaminvoer.getText() );
badgevak = new JTextField ( 20 );
badgevak.setHorizontalAlignment ( JTextField.LEFT );
badgevak.setEditable ( false );
badgevak.setText( badgeinvoer.getText() ) ;
totaalurenvak = new JTextField ( 20 );
totaalurenvak.setHorizontalAlignment ( JTextField.LEFT );
totaalurenvak.setEditable ( false );
totaalurenvak.setText( "" + resultaat );
第一个面板有一些文本字段,人们可以在其中键入内容,我希望这些文本字段中的文本出现在第二个面板的文本字段中,但我不知所措。当我运行程序时,现在第二个面板的文本字段中没有任何内容。
来自actionlistener的“int resultaat”也应出现在其中一个文本字段中,但我也无法使其工作。
我将setter / getter放在正确的位置还是应该在actionlistener中?或者我错过了一段不同的代码?
答案 0 :(得分:2)
说,你的按钮是 jButton1 ,你的textFields是 jTextField1 和 jTextField2
为您的按钮添加actionListner:
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
然后简单地实现这个方法:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String s=jTextField1.getText();
jTextField2.setText(s);
}
答案 1 :(得分:1)
使用Swing中的Action Listeners进行事件处理非常简单。
正如docs中所述,您需要执行以下步骤:
- 声明一个事件处理程序类并指定该类 实现一个ActionListener接口或扩展一个类 实现一个ActionListener接口。例如:
public class MyClass implements ActionListener {
- 注册活动的实例 处理程序类作为一个或多个组件的侦听器。例如:
someComponent.addActionListener(instanceOfMyClass);
- 包含代码 在侦听器接口中实现方法。例如:
醇>public void actionPerformed(ActionEvent e) { ...//code that reacts to the action... }
我看到你已经在尝试做其中的一些了。
您的方法中的问题是您不能在作为组件容器的面板上拥有动作侦听器。您需要为各个组件定义动作侦听器,例如在您的情况下,文本字段maandaginvoer
。您需要使用面板1上的文本字段注册(步骤2)您的监听器。
解决此问题后,您应该能够看到所需的输出。