Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击按钮时是否向JTextArea框添加文本?_Java_Swing_User Interface_Actionlistener_Jtextarea - Fatal编程技术网

Java 单击按钮时是否向JTextArea框添加文本?

Java 单击按钮时是否向JTextArea框添加文本?,java,swing,user-interface,actionlistener,jtextarea,Java,Swing,User Interface,Actionlistener,Jtextarea,好的,所以我想知道当在GUI中单击某个按钮时,如何将文本添加到文本区域。对于当前的问题,当我单击“重置”按钮时,我希望它显示我已经预先编写的几行文本。我不确定如何在我的小程序中实现这一点 这是我的按钮代码 public class DisplayButtonPanel2 extends JPanel{ //create buttons for reseting back to original data, displaying data and sorting data JButton res

好的,所以我想知道当在GUI中单击某个按钮时,如何将文本添加到文本区域。对于当前的问题,当我单击“重置”按钮时,我希望它显示我已经预先编写的几行文本。我不确定如何在我的小程序中实现这一点

这是我的按钮代码

public class DisplayButtonPanel2 extends JPanel{

//create buttons for reseting back to original data, displaying data and sorting data
JButton resebutton = new JButton("RESET");
JButton displaybutton = new JButton("DISPLAY");  
JButton sortbutton = new JButton("SORT"); 

//constructor 
public DisplayButtonPanel2()
{

      //create action listener object
  BListen listener = new BListen();

      //add action listen functionalty to buttons
  resebutton.addActionListener(listener);
  displaybutton.addActionListener(listener);
  sortbutton.addActionListener(listener);

     //add buttons to panel
  add(resebutton);
  add(displaybutton);
  add(sortbutton);

}

public class BListen implements ActionListener
{

   public void actionPerformed(ActionEvent event){

     if (event.getSource() == resebutton){

        JOptionPane.showMessageDialog(null,"reset Button Clicked");
        DisplayEmployeePanel displayemply = new DisplayEmployeePanel();
        displayemply.resetText();


     }

     else if(event.getSource() == displaybutton){

        JOptionPane.showMessageDialog(null,"display Button Clicked");
       // DisplayEmployeePanel displayemply = new DisplayEmployeePanel();
     }
     else if(event.getSource() == sortbutton){

        JOptionPane.showMessageDialog(null,"sort Button Clicked");
     }


  }
}

文本区域的代码

public class DisplayEmployeePanel extends JPanel{


//create a text area that will display employees

JTextArea employeetextarea = new JTextArea("~Company Employee's~", 20 ,30);          //textinarea, hieght, width



 //constructor
 public DisplayEmployeePanel()
 {

   employeetextarea.setEditable(false);   //will not be able to edit text in area

  String ns = "\nDisplay Employee Info BELOW";
  employeetextarea.append(ns);



  //add text area to panel
  add(employeetextarea);


}

public void resetText()
{

  String sn = "\nreset to original emmployee list";
  employeetextarea.append(sn);
  add(employeetextarea);
  System.out.println("reset text");///testing purposes

 }



 }//end class
编辑*添加更多源代码,如果有帮助, 此代码用于创建框架

 public class CreateCompanyGUI extends JFrame{

 //constructor
 public CreateCompanyGUI()
 {
   super("Company Applet!");                                      //tittle
  setSize(800,800);                                              //set size  *careful when using pack*
  setLocationRelativeTo(null);                                   //places frame in middle of screen by default
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                //how to close
  setLayout(new BorderLayout());                                 //set BorderLayout manager for this frame


  //create panels
  DisplayEmployeePanel dep = new DisplayEmployeePanel();
  //  DisplayEmployeePanel2 dep2 = new DisplayEmployeePanel2();
  DisplayButtonPanel dbp = new DisplayButtonPanel();
  DisplayButtonPanel2 dbp2 = new DisplayButtonPanel2();
 // DisplayListPanel dlp = new DisplayListPanel();


  //add panels to frame
  add(dep, BorderLayout.NORTH);
  add(dbp2, BorderLayout.CENTER);
  add(dbp, BorderLayout.SOUTH);
 // add(dlp, BorderLayout.EAST);
 // add(dep2, BorderLayout.CENTER);

  //pack (packs the window and creates appporiate size
  pack();
  //visible = TRUE (so we can see the frame)
  setVisible(true);


}



}//end class
用于创建GUI的代码

public class CompanyApplet extends JApplet{

public static void main(String[] args)
{
     //create GUI for company applet
      new CreateCompanyGUI();


  }
 } 
您不能继续创建新的DisplayEmployeePanel。您希望更新GUI上可见的现有面板的文本区域。这意味着DisplayButtonPanel2需要对DisplayEmployeePanel的引用

因此,在创建两个面板并将其添加到框架的代码中,需要将DisplayEmployeedPanel作为参数传递到DisplayButtonPanel2


或者更简单的解决方案是只使用一个类来创建两个面板。然后,该类中的所有方法都可以访问该类中定义的所有组件。

我认为在DisplayButtonPanel2类中创建新的DisplayEmployeePanel时出错了,那么如何传递DisplayEmployeePanel呢?类似DisplayEmployeePanel dep=newDisplayEmployeePanel()的内容;DisplayButtonPanel2 dbp2=新的DisplayButtonPanel2();dbp2(dep)@问:我建议您从阅读关于如何创建类和传递参数的教科书开始。除非阅读课本中的基础知识,否则无法编程。例如,看看创建JButton的代码。输入要在按钮上显示的文本。这是一个创建类并传入参数的示例。这没什么不同。哈哈,我知道如何创建一个类等等。只是我不熟悉用Java中的Swing、events、awt组件创建GUI,我从来没有做过这种编程。谢谢你。@S.Q,这与Swing没有什么特别的关系。您所要做的就是创建一个对象并向该对象传递一个参数。在这种情况下,您要创建的对象是DisplayButtonPanel,您将DisplayEmployeePanel的引用作为参数传递。
    DisplayEmployeePanel displayemply = new DisplayEmployeePanel();
    displayemply.resetText();