Java JTextArea/字段中未设置文本

Java JTextArea/字段中未设置文本,java,swing,jpanel,jtextfield,jtextarea,Java,Swing,Jpanel,Jtextfield,Jtextarea,我在设置JTextArea和JTextField中的一些文本时遇到问题…我有点困惑,因为我以前在它们中设置过文本,事实上,我在同一程序的不同类中设置过它们,没有任何问题。。。我已经打印了要检查的字符串,以确保它不是null或只是空的“”,并且我的字符串确实打印了它们应该打印的内容,但它们没有在JTextField/区域中设置 有人能告诉我为什么事情搞砸了吗 (我已经为您提供了完整的代码,这样您就不会被方法调用所迷惑,但其中大部分可能不是必需的。您真正需要关注的是run()方法和populateI

我在设置JTextArea和JTextField中的一些文本时遇到问题…我有点困惑,因为我以前在它们中设置过文本,事实上,我在同一程序的不同类中设置过它们,没有任何问题。。。我已经打印了要检查的字符串,以确保它不是null或只是空的“”,并且我的字符串确实打印了它们应该打印的内容,但它们没有在JTextField/区域中设置

有人能告诉我为什么事情搞砸了吗

(我已经为您提供了完整的代码,这样您就不会被方法调用所迷惑,但其中大部分可能不是必需的。您真正需要关注的是run()方法和populateInfo()方法。populateInfo()是它应该将测试设置为textArea和textField的地方。)

代码如下:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.*;
import java.util.*;
import java.io.*;

public class EditDiary extends JApplet implements ActionListener {

  private JFrame frame = new JFrame();
  private String[] date;
  private String[] rest;
  private int index = 0;
  private int count = 0;

  private JLabel lblDate = new JLabel("Date");
  private JTextField txtDate = new JTextField();
  private JLabel lblDiary = new JLabel("Diary Entry");
  private JTextArea txtDiary = new JTextArea(20,30);

  private JButton btnDone = new JButton("Done");
  private JButton btnCancel = new JButton("Cancel");

  public EditDiary(){

    JPanel panel1 = new JPanel();

    panel1.add(lblDate);
    panel1.add(txtDate);
    panel1.add(lblDiary);
    panel1.add(txtDiary);
    panel1.add(btnDone);
    panel1.add(btnCancel);

    add(panel1);

    btnDone.addActionListener(this);
    btnCancel.addActionListener(this);

  }

  public void actionPerformed(ActionEvent e) {

    if (e.getSource() == btnDone) {

      try {
        editInfo();
      }
      catch (Exception ex) {

      }
      finally {

      }
    }
    else if (e.getSource() == btnCancel) {
      // Haven't done anything here yet
    }
  }

  public void run(String[] sDate, String[] sRest, int iIndex, int iCount) {

    date = sDate;
    rest = sRest;
    index = iIndex;
    count = iCount;

    JApplet applet = new EditDiary();
    frame.add(applet);
    frame.setTitle("Edit Diary Entry");
    frame.setLocationRelativeTo(null); // Center the frame
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setSize(1280, 800);
    frame.setLocationRelativeTo(null); // Center the frame
    frame.setVisible(true);

    populateInfo();
  }

  public static void main(String[] args) {

  }

  public void populateInfo() {

    // System.out.println(date[index]);
    // System.out.println(rest[index]);

    txtDate.setText(date[index]);
    txtDiary.setText(rest[index]);

  }

  public void editInfo() throws Exception {

    BufferedWriter out = new BufferedWriter(new FileWriter("Diary.txt"));

    date[index] = txtDate.getText();
    rest[index] = txtDiary.getText();

    for(int i = 0; i < count; ++i) {
      out.write(date[i]);
      out.write(rest[i]);
    }
  }    
}
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.lang.*;
导入java.util.*;
导入java.io.*;
公共类EditDiary扩展了JApplet实现ActionListener{
私有JFrame=新JFrame();
私有字符串[]日期;
私有字符串[]rest;
私有整数指数=0;
私有整数计数=0;
私人JLabel lblDate=新JLabel(“日期”);
私有JTextField txtDate=新JTextField();
私人JLabel lblDiary=新JLabel(“日记条目”);
私人JTextArea txtDiary=新JTextArea(20,30);
私有JButton btnDone=新JButton(“完成”);
私有JButton btnCancel=新JButton(“取消”);
公共编辑日记(){
JPanel panel1=新的JPanel();
第1组。添加(lblDate);
面板1.添加(txtDate);
面板1.添加(lblDiary);
第1组。添加(TXT日志);
第1组。添加(btnDone);
小组1.添加(btnCancel);
增加(第1组);
addActionListener(这个);
btnCancel.addActionListener(此);
}
已执行的公共无效操作(操作事件e){
如果(例如getSource()==btnDone){
试一试{
editInfo();
}
捕获(例外情况除外){
}
最后{
}
}
else if(e.getSource()==btnCancel){
//我还没在这里做什么
}
}
公共无效运行(字符串[]sDate、字符串[]sRest、int iIndex、int iCount){
日期=sDate;
剩余=剩余;
指数=指数;
计数=i计数;
JApplet applet=新编辑日志();
frame.add(applet);
frame.setTitle(“编辑日记条目”);
frame.setLocationRelativeTo(null);//将帧居中
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
帧设置大小(1280800);
frame.setLocationRelativeTo(null);//将帧居中
frame.setVisible(true);
populateInfo();
}
公共静态void main(字符串[]args){
}
public void populateInfo(){
//System.out.println(日期[索引]);
//System.out.println(rest[index]);
setText(日期[索引]);
setxt(rest[索引]);
}
public void editInfo()引发异常{
BufferedWriter out=新的BufferedWriter(新的文件编写器(“Diary.txt”);
日期[索引]=txtDate.getText();
rest[index]=txtDiary.getText();
对于(int i=0;i

调用run的代码与此无关

当您遇到问题时,您不知道什么代码是相关的或不相关的。如何调用代码的上下文是相关的。是什么让你认为只要看一下代码就能解决问题。有时,我们实际上需要执行代码,以便能够看到程序的实际逻辑流等

这不是创建小程序的方式。应在小程序的init()方法中将组件添加到小程序中。我建议你读一读

代码的问题是有两个EditDiary类的实例。一个是小程序,另一个是您尝试添加到框架中的小程序。但是,ActionListener代码仅引用小程序文本组件,而不是添加到框架中的组件


你需要重新设计你的程序。也许创建框架的代码应该是一个内部类,这样您就可以创建属于框架而不是小程序的变量和侦听器。

调用
run()
的代码在哪里?为什么有一个不起任何作用的
main()
?为什么你有一个finally,它什么都不做?调用run的代码没有关系…你需要知道的是,它确实被调用了,它确实在数组中读取了,还有什么没有…我不关心你在这里说的任何事情,我没有完成其余的代码…我只需要知道为什么textArea/字段没有填充