2017-06-22 77 views
2

所以我有2个不同的面板,第一面板厂像它应该,但可能需要的ActionListener来解决我的问题:如何使用gettext和的setText

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中?或者我错过了一段不同的代码?

+1

问题太广泛了。请考虑改变它并提供一个最简单的例子。 – LazerBanana

+0

我明白了,但我不知道在代码中我需要做什么,所以我想这就是为什么我这样做。:(我希望有人仍然可以帮我。 –

+0

请提供[mcve]。在这里发布一个完整的代码很简单,但我们很难找到你想要的。 – AxelH

回答

1

Swing中Action Listeners的事件处理非常简单。在docs提到

为,则需要执行以下步骤:

  1. Declare an event handler class and specify that the class either implements an ActionListener interface or extends a class that implements an ActionListener interface. For example: public class MyClass implements ActionListener {
  2. Register an instance of the event handler class as a listener on one or more components. For example: someComponent.addActionListener(instanceOfMyClass);
  3. Include code that implements the methods in listener interface. For example: public void actionPerformed(ActionEvent e) { ...//code that reacts to the action... }

我看到你已经尝试做一些这样的。

您的方法存在的问题是您不能在作为组件容器的面板上拥有操作侦听器。您需要为各个组件定义您的动作侦听器,例如在你的情况下,文本字段maandaginvoer。您需要在面板1上的文本字段中注册(步骤2)您的听众。

解决此问题后,您应该能够看到您所需的输出。

+1

谢谢VHS!现在就试试这个! –

+0

它的工作,感谢您的解释..一直在努力争取这一整天的学校,所以你不知道我多么感激!再次感谢! –

+0

@StefanBuijs。不用谢。我很高兴能够帮助社区。 – VHS

2

说,你的按钮是的jButton1和你的文本框是jTextField1jTextField2中

为您的按钮添加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); 
    } 
+0

我很抱歉,我不明白你的意思是什么InitComponents或initblock ..只有几个星期学习java ..我会继续前进并尝试几个不同的地方与你的建议无论如何,感谢您的帮助! –

+0

@StefanBuijs我已经编辑了答案,我愚蠢地认为你正在使用IDE(不知道为什么!)。但是,您仍然可以简单地注册您的组件并按照我所展示的方式执行某些操作。 –