你写代码太不细心了,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的监听和处理事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)