gpt4 book ai didi

java - 按下按钮时如何从文本字段获取文本?

转载 作者:行者123 更新时间:2023-12-02 11:35:10 24 4
gpt4 key购买 nike

我是编程界的新人,所以我的技术很差。不管怎样,我必须为学校项目编写一个程序,所以我想出了一个看起来很简单的程序。基本上,我只有一个框架、一个按钮、一个面板(我稍后将使用)和两个文本字段。我需要当我在第一个文本字段中写入内容并按下按钮时,文本将被扫描并放入变量中(必须稍后处理)。事实是,我认为我做得不对(就像我说的,我只是一个初学者),而且我不知道如何得到我想要的东西。代码如下:

import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.event.*;
import java.io.*;
import java.util.Timer.*;
import java.util.TimerTask.*;
import java.util.Scanner.*;
import java.lang.*;
import javax.sound.sampled.*;

public class ExamProgram {

public TextField scrivi;
public TextField vuraid;
public Button b;
public String s;


static class int timer4action(){return 0;}

static class chiusura implements WindowListener {
public void windowClosing (WindowEvent ev) {System.exit(0);}
public void windowClosed (WindowEvent ev) {}
public void windowOpened (WindowEvent ev) {}
public void windowActivated (WindowEvent ev) {}
public void windowDeactivated (WindowEvent ev) {}
public void windowIconified (WindowEvent ev) {}
public void windowDeiconified (WindowEvent ev) {}
} //Window events

public ExamProgram(){ //Constructor
//Frame inizialization
Frame f = new Frame ("Artificial wife");
f.setLayout(null);
f.setBackground(Color.white);
Image icona = Toolkit.getDefaultToolkit().getImage("src\\img\\Kurisu_profile.png");
f.setIconImage(icona);
f.setSize(800,600);
f.setVisible(true);
f.setResizable(false);
f.addWindowListener(new chiusura());
//Menù initialization.
MenuBar mb = new MenuBar();
Menu m1 = new Menu("File");
Menu m2 = new Menu("Opzioni");
Menu m3 = new Menu("Aiuto");
MenuItem mi1 = new MenuItem("Nuovo");
MenuItem mi2 = new MenuItem("Carica");
MenuItem mi3 = new MenuItem("Chiudi");
MenuItem mi4 = new MenuItem("Cambia lingua");
MenuItem mi5 = new MenuItem("FAQ");
MenuItem mi6 = new MenuItem("Manuale Elettronico");
m1.add(mi1); m1.add(mi2); m1.add(mi3);
m2.add(mi4);
m3.add(mi5);m3.add(mi6);
mb.add(m1); mb.add(m2); mb.add(m3);
f.setMenuBar(mb);
//Panel initialization
Panel waifu = new Panel();
waifu.setBackground(Color.PINK);
waifu.setBounds(25, 50, 750, 450);
waifu.setVisible(true);
f.add(waifu);
//Textfield n°1 initialization
scrivi = new TextField();
scrivi.setVisible(true);
scrivi.setBackground(Color.pink);
scrivi.setBounds(200,530, 400, 30);
f.add(scrivi);

//Button initialization
b = new Button("Send");
b.setBackground(Color.PINK);
b.setBounds(650, 530, 50, 30);
f.add(b);

//Event and Textfield n°2 initialization
vuraid = new TextField();
vuraid.setVisible(true);
vuraid.setEditable(false);
vuraid.setBackground(Color.green);
vuraid.setBounds(200,570, 400, 30);
f.add(vuraid);
b.addActionListener(new send());

}

public static void main(String[] args){
new ExamProgram();
}
}

以及我想从事件中获得的操作:

import java.lang.*;
import java.awt.*;
import java.awt.event.*;

public class send implements ActionListener
{

public void actionPerformed(ActionEvent e)
{
String textDialogue = new String();
textDialogue = scrivi.getText();
vuraid.setText(textDialogue);
}
}

希望我能够正确表达自己的意思,以便您能够明白我想要问的问题。我尝试删除所有意大利语文本,以使代码更容易理解。非常感谢您的关注。

最佳答案

您的send类需要对包含信息的对象(即文本字段)的引用

“最简单”的解决方案是通过其构造函数将文本字段的引用传递给 send

b.addActionListener(new send(vuraid));

显然,您需要更新 send 类来支持此功能

public class send implements ActionListener {
private TextField vuraid

public send(TextField vuraid) {
this.vuraid = vuraid;
}
//...

这是一个比较常见的概念。请参阅Passing Information to a Method or a Constructor了解更多详情

警告的话。您主要使用基于 AWT 的组件。 AWT 已于 18 年前被 Swing 取代,您可能需要考虑更新

我还鼓励您了解布局管理 API 的工作原理,因为它将解决您在不同计算机之间遇到的许多常见问题。

首先查看 Laying Out Components Within a Container了解更多详情

您通常还会发现移动

f.setSize(800,600);
f.setVisible(true);
f.setResizable(false);

main 方法的末尾并按以下顺序调用它们

f.setResizable(false);
f.setSize(800,600);
f.setVisible(true);

这解决了首次显示 UI 时组件不可见的问题。使用 setResizing 时还需要考虑一些注意事项,因为它可以更改窗口边框的大小并更改可用窗口大小

关于java - 按下按钮时如何从文本字段获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com