为什么JAVA读取不到文本框中的数字

为什么JAVA读取不到文本框中的数字,第1张

你写代码太不细心了,init1()方法内不该在创建JTextField,因为有一个全局的JTextField,把init1()中的text除去,把公共的text添加进去就行了

加上以下KeyListener监听事件就可以了。\x0d\public class VoteElectKeyListener implements KeyListener {\x0d\\x0d\@Override\x0d\public void keyTyped(KeyEvent e) {\x0d\// TODO Auto-generated method stub\x0d\int keyChar=egetKeyChar();\x0d\if (keyChar>=KeyEventVK_0 && keyChar\x0d\} else {\x0d\econsume(); \x0d\}\x0d\}\x0d\\x0d\@Override\x0d\public void keyPressed(KeyEvent e) {\x0d\// TODO Auto-generated method stub\x0d\\x0d\}\x0d\\x0d\@Override\x0d\public void keyReleased(KeyEvent e) {\x0d\// TODO Auto-generated method stub\x0d\\x0d\}\x0d\\x0d\}

首先,jTextField有不同于按钮等其它组件的监听器,通常不使用楼上所使用的监听器

下面这段是处理的代码:

jTextFieldgetDocument()addDocumentListener(new javaxswingeventDocumentListener(){

public void changedUpdate(DocumentEvent e) {//这是更改 *** 作的处理

String s = jTextFieldgetText()trim();//trim()方法用于去掉你可能误输入的空格号

}

public void insertUpdate(DocumentEvent e) {//这是插入 *** 作的处理

String s = jTextFieldgetText()trim();

}

public void removeUpdate(DocumentEvent e) {//这是删除 *** 作的处理

String s = jTextFieldgetText()trim();

}

}

);

这样写的好处是可以实时监听,即你对文本框进行任意 *** 作事件都会有响应可以尝试在方法里写输出语句测试

通过s获得输入结果后可以直接用于表格的输出

#include <stdioh>

int main()

{int x,a,b,c;

printf("请输入一个三位数:");

scanf("%d",&x);

a=x/100;

b=x/10%10;

c=x%10;

printf("百位是%d\n十位是%d\n个位是%d\n",a,b,c);

return 0;

}

/

其中的事件响应 机制 比较经典,你可以看看

/

package two;

import javaawtBorderLayout;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJLabel;

import javaxswingJPanel;

import javaxswingJTextField;

/

窗体

@author Administrator

/

public class MyFrame extends JFrame {

private JPanel panelNorth;

private JPanel panleCenter;

private JPanel panelSouth;

private JLabel jlbA, jlbB, jlbC;

private JTextField jtf;

private JTextField jtfR;

private JButton jbtn;

private JTextField jtfB, jtfS, jtfG;

public MyFrame(String title) {

thissetTitle(title);

initMyFrame();

}

private void initMyFrame() {

thissetLayout(new BorderLayout());

panelNorth = new JPanel();

panleCenter = new JPanel();

panelSouth = new JPanel();

jtf = new JTextField(15);

jtfR = new JTextField(15);

jtfRsetText("<----输入数字");

jtfRsetEditable(false);

panelNorthadd(jtf);

panelNorthadd(jtfR);

jbtn = new JButton("显示");

panleCenteradd(jbtn);

jtfB = new JTextField(10);

jtfS = new JTextField(10);

jtfG = new JTextField(10);

jlbA = new JLabel("百位:");

jlbB = new JLabel("十位:");

jlbC = new JLabel("个位:");

panelSouthadd(jlbA);

panelSouthadd(jtfB);

panelSouthadd(jlbB);

panelSouthadd(jtfS);

panelSouthadd(jlbC);

panelSouthadd(jtfG);

thisgetContentPane()add(panelNorth, BorderLayoutNORTH);

thisgetContentPane()add(panleCenter, BorderLayoutCENTER);

thisgetContentPane()add(panelSouth, BorderLayoutSOUTH);

/

给按钮 添加 事件 监听器

/

ActionListener al=new BTNListener(this);

jbtnaddActionListener(al);

thissetVisible(true);

thissetBounds(200, 200, 500, 150);

thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

thissetResizable(false);

}

public boolean checkInputString(){

String s=getJTFText();

if(s==null || ""equals(s)){

return false;

}

if(slength()==3){

if((scharAt(0)> '0' && scharAt(0)<='9') && (scharAt(1)>='0' && scharAt(1)<='9') && (scharAt(2)>='0' && scharAt(2)<='9')){

return true;

}

}

return false;

}

public void showMyFrameMessage(){

thisjtfBsetText(StringvalueOf(getJTFText()charAt(0)));

thisjtfSsetText(StringvalueOf(getJTFText()charAt(1)));

thisjtfGsetText(StringvalueOf(getJTFText()charAt(2)));

}

public void clear(){

thisjtfBsetText("");

thisjtfSsetText("");

thisjtfGsetText("");

}

public String getJTFText(){

return thisjtfgetText();

}

public void setJTFRText(String msg){

thisjtfRsetText(msg);

}

public static void main(String[] args) {

new MyFrame("TITLE");

}

}

/

按钮的 监听器

@author Administrator

/

class BTNListener implements ActionListener{

private MyFrame frame;

public BTNListener(MyFrame frame){

thisframe=frame;

}

@Override

public void actionPerformed(ActionEvent e) {

if(framecheckInputString()){

frameshowMyFrameMessage();

framesetJTFRText("再次输入数字");

}else{

framesetJTFRText("错误的输入,再次输入数字");

frameclear();

}

}

}

你好!很高兴为你回答问题。

首先,请原谅我指出你的错误。

错误一:int a[] =IntegerparseInt(jtagetText());

错处:从jta获取字符串后,转换为整数,乃1个数,用数组存放可以,但不能像你这样写,你这样写是将一个整形数组初始化为一个整数。所以错。。。

错误二:jtfappend(StringvalueOf(max));

错处:JTextField没有append方法,无中生有。所以错。。。

错误三:思路错

错处:将文本域中获取的几个数字,不加处理则提取其中数字作为整数数组,是不行的

修正如下:(在文本框中输入几个数字,请用空格隔开,有问题请追问)

import javaxswing;

import javaawt;

import javaawtevent;

public class Exam3_7 {

public static void main(String[] args) {

FrameText ft = new FrameText();

ftsetVisible(true);

}

}

class FrameText extends JFrame implements ActionListener {

JTextField jtf;

JTextArea jta;

JButton jbt, jbt1;

FrameText() {

super("输出最大数和最小数的程序");

Container con = getContentPane();

consetLayout(new FlowLayout());

jta = new JTextArea("", 5, 10);

jtf = new JTextField(5);

jbt = new JButton("获取最大数");

jbt1 = new JButton("获取最小数");

jbtaddActionListener(this);

jbt1addActionListener(this);

conadd(jta);

conadd(jtf);

conadd(jbt);

conadd(jbt1);

setSize(300, 300);

}

public void actionPerformed(ActionEvent e) {

String[] input = jtagetText()split(" ");

int[] a = new int[inputlength];

for (int i = 0; i < inputlength; i++) {

a[i] = IntegerparseInt(input[i]);

}

if (egetSource() == jbt) {

int max = a[0];

for (int j = 1; j < alength; j++) {

if (a[j] > max) {

max = a[j];

}

}

jtfsetText(StringvalueOf(max));

}

if (egetSource() == jbt1) {

int min = a[0];

for (int j = 1; j < alength; j++) {

if (a[j] < min) {

min = a[j];

}

}

jtfsetText(StringvalueOf(min));

}

}

}

以上就是关于为什么JAVA读取不到文本框中的数字全部的内容,包括:为什么JAVA读取不到文本框中的数字、java 如何设置jTextField文本框只能输入数字、怎样写JTextField的监听和处理事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9470426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存