java - 我想永久保留 Textfield 中 Textarea 的值(Java GUI)

标签 java swing

我想在通过按钮通过textfield1输入Textarea1的值后保留它们。每次我运行完它,新的值就会消失。第一次执行此操作时,我得到了插入的名称的值,但是当我第二次执行此操作时,它会被删除。请帮助我,谢谢。这是代码:

import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.border.Border;
import javax.swing.*;


public class GUI_project2 extends JFrame {

private JMenuBar menuBar;
private JButton button1;
private JTextArea textarea1;
private JTextField textfield1;

static String MYARRAY[] = new String[4];
static int COUNTER = 0;
static String NEWITEM = null;
//Constructor 
public GUI_project2(){

    this.setTitle("GUI_project2");
    this.setSize(1118,845);
    //menu generate method
    generateMenu();
    this.setJMenuBar(menuBar);

    //pane with null layout
    JPanel contentPane = new JPanel(null);
    contentPane.setPreferredSize(new Dimension(1118,845));
    contentPane.setBackground(new Color(192,192,192));


    button1 = new JButton();
    button1.setBounds(206,109,90,35);
    button1.setBackground(new Color(214,217,223));
    button1.setForeground(new Color(0,0,0));
    button1.setEnabled(true);
    button1.setFont(new Font("sansserif",0,12));
    button1.setText("Add Word");
    button1.setVisible(true);
    //Set methods for mouse events
    //Call defined methods
    button1.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent evt) {
            ButtonClicked(evt);
        }
    });


    textfield1 = new JTextField();
    textfield1.setBounds(203,46,90,35);
    textfield1.setBackground(new Color(255,255,255));
    textfield1.setForeground(new Color(0,0,0));
    textfield1.setEnabled(true);
    textfield1.setFont(new Font("sansserif",0,12));
    textfield1.setText("");
    textfield1.setVisible(true);


    textarea1 = new JTextArea();
    textarea1.setBounds(27,48,150,100);
    textarea1.setBackground(new Color(255,255,255));
    textarea1.setForeground(new Color(0,0,0));
    textarea1.setEnabled(true);
    textarea1.setFont(new Font("sansserif",0,12));
    textarea1.setText("");
    textarea1.setBorder(BorderFactory.createBevelBorder(1));
    textarea1.setVisible(true);

    //adding components to contentPane panel
    contentPane.add(button1);
    contentPane.add(textfield1);
    contentPane.add(textarea1);
    //adding panel to JFrame and seting of window position and close operation
    this.add(contentPane);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.pack();
    this.setVisible(true);
}

//Method mouseClicked for button1
private void ButtonClicked (MouseEvent evt) {
        //TODO
        NEWITEM = textfield1.getText();
        if (NEWITEM.compareTo("end")!=0){
            MYARRAY[COUNTER] = NEWITEM;
            COUNTER++;
            if (COUNTER == MYARRAY.length){ 
                increaseArraySize();
            }
        }
        String NEWITEM = "";
        listArray();
}
public void listArray(){
        for (int X=0;X<MYARRAY.length;X++){
            textarea1.setText(textfield1.getText());
        }

}

 public static void increaseArraySize(){
        System.out.print("Here we increase the size to ");
        String TEMP[] = new String[MYARRAY.length*2];
        System.arraycopy(MYARRAY, 0, TEMP, 0, MYARRAY.length);
        MYARRAY = TEMP;
        System.out.println(TEMP.length);

}
//method for generate menu
public void generateMenu(){
    menuBar = new JMenuBar();

    JMenu file = new JMenu("File");
    JMenu tools = new JMenu("Tools");
    JMenu help = new JMenu("Help");

    JMenuItem open = new JMenuItem("Open   ");
    JMenuItem save = new JMenuItem("Save   ");
    JMenuItem exit = new JMenuItem("Exit   ");
    JMenuItem preferences = new JMenuItem("Preferences   ");
    JMenuItem about = new JMenuItem("About   ");


    file.add(open);
    file.add(save);
    file.addSeparator();
    file.add(exit);
    tools.add(preferences);
    help.add(about);

    menuBar.add(file);
    menuBar.add(tools);
    menuBar.add(help);
}



 public static void main(String[] args){
    System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new GUI_project2();
        }
    });
}

}

最佳答案

The first time I do it I get the value of the name I inserted, however when i do it a second time it erases

您认为 setText(..) 方法有什么作用?您是否阅读过 API 以获取该方法的说明?

textarea1.setText(textfield1.getText());

应该是:

textarea1.append(textfield1.getText());

不读API就无法编程!现在花点时间阅读 JTextArea API,了解您将来可能会发现有用的其他方法。

关于java - 我想永久保留 Textfield 中 Textarea 的值(Java GUI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167831/

相关文章:

java - 使用 JPA 和 derby 数据库启动 Spring Boot 应用程序时出现表未找到错误

java - REDIS 支持事件监听器吗?

java - 在java中从数据库检索数据到JTable

java - JFrame从自定义按钮拖动不流畅

java - 为什么相同的代码在 for 循环中会更短?

java - 列表中存在具有相同名称的元素

java - Diffie–Hellman 公钥计算速度慢

java - 通过手绘撤消和移动功能

java - 使用一个空文件来拥有一个应用程序实例

java - JProgressBar 无法正常工作