精华内容
下载资源
问答
  • 问题:之前我有一篇博文也写了这个问题,也是使用的字符串来控制文本框输入数字不过,那篇博文给的方法只能限制数字输入,以及数字输入长度的限制今天给出可以限制输入数字大小的方法,例如:希望输入的数字最大不...

    问题:

    之前我有一篇博文也写了这个问题,也是使用的字符串来控制文本框的输入数字

    不过,那篇博文给的方法只能限制数字输入,以及数字输入长度的限制

    今天给出可以限制输入数字大小的方法,例如:希望输入的数字最大不能超过35,那么36是绝对输入不进去的

    而且,其他字符也是不能输入进去的

    有兴趣的可以自己改成浮点数的输入大小限制(转载请说明来源:http://blog.csdn.net/Kilper)

    代码:

    package Test.csdn;

    import java.awt.GridLayout;

    import java.awt.event.KeyAdapter;

    import java.awt.event.KeyEvent;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;

    import javax.swing.JTextField;

    /**

    *

    * @ClassName NumLimit

    * @Description 通过字符串来控制JTextField输入数字以及数字大小的示例

    * 只能控制正整数的输入(没有包括0,因为设置了第一位不能输入0,如有需要可以自己更改)

    * 如果有什么疑问请到作者博客留言或评论,博客地址在下面一行

    * 有兴趣的可以改成浮点数的输入大小限制,Kilper就不再写浮点数的示例了

    * @author Kilper http://blog.csdn.net/Kilper

    * @date 2010-8-24 下午05:08:40

    *

    */

    public class NumLimit extends JFrame {

    /**

    * @Fields serialVersionUID : TODO

    */

    private static final long serialVersionUID = 1133553442569412104L;

    private static JTextField limit;

    private static JTextField input;

    public NumLimit(String title) {

    super(title);

    this.setSize(400, 100);

    this.add(buildTestPanel()); // 加载面板到窗体中

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭按钮的事件响应

    this.setLocationRelativeTo(null); // 窗体位置居中

    }

    /**

    *

    * @Title buildTestPanel

    * @author Kilper http://blog.csdn.net/Kilper

    * @Description: 获得构建好的JPanel面板

    * @return JPanel

    */

    private JPanel buildTestPanel() {

    JPanel panel = new JPanel();

    limit = new JTextField();

    input = new JTextField();

    panel.setLayout(new GridLayout(0, 2));

    panel.add(new JLabel("数字输入限制设置限制框:"));

    panel.add(limit);

    panel.add(new JLabel("数字输入限制验证输入框:"));

    panel.add(input);

    // 为设置限制框也添加数字输入和大小限制

    limit.addKeyListener(new KeyAdapter() {

    public void keyTyped(KeyEvent e) {

    String key = limit.getText();

    String value = getLimit(key, 99999); // 该框只能输入最大99999的数字

    if (value.indexOf(e.getKeyChar()) < 0)

    e.consume();

    }

    });

    input.addKeyListener(new KeyAdapter() {

    public void keyTyped(KeyEvent e) {

    String key = input.getText();

    int count = Integer.valueOf(limit.getText().trim());

    // 示例讲解:key = "13" count = 135

    String value = getLimit(key, count);

    // 示例讲解:返回的字符串使得value = "012345";

    if (value.indexOf(e.getKeyChar()) < 0) // 如果输入6,则销毁该输入

    // 输入字符,则销毁该输入

    e.consume(); // 销毁输入

    // 如果输入0-5之间,则不做处理,输入的数字会显示在屏幕中

    }

    });

    return panel;

    }

    /**

    *

    * @Title getLimit

    * @author Kilper http://blog.csdn.net/Kilper

    * @Description: 获得限制字符串

    * @return String

    */

    private String getLimit(String key, int num) {

    // 示例讲解:key = "13" count = 135

    String value = String.valueOf(num); // value = "135";

    int a[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, b = num;

    // b = 135,a[] = {0,……};

    int len = key.length(), length = value.length();

    // len = 2,length = 3;

    for (int i = 0; b > 0; i++, b /= 10)

    a[length - 1 - i] = b % 10;

    // a[] = {1,3,5,0,……};

    int in;

    if (key.equals(""))

    in = 0;

    else

    in = Integer.valueOf(key) * 10;

    // in = 130;

    if (len < length - 1) {

    if (len == 0)

    value = string(1, 9); // 限制第一位不能输入0

    else

    value = string(0, 9);

    } else if (len == length - 1) {

    // 进入这里 in = 130 < num = 135

    if (in <= num)

    if (in == 0)

    value = string(1, a[len]);

    else

    value = string(0, a[len]); // 所以:value = "012345";

    else

    value = "";

    } else {

    value = "";

    }

    // 返回的字符串为:"0123456"

    return value;

    }

    /**

    *

    * @Title string

    * @author Kilper http://blog.csdn.net/Kilper

    * @Description: 获得从a开始,到b结束的字符串,例如:a=2,b=6,则返回:"23456"

    * @return String

    */

    private static String string(int a, int b) {

    String value = "";

    for (int i = a; i <= b; i++)

    value += String.valueOf(i);

    return value;

    }

    public static void main(String[] args) {

    NumLimit test = new NumLimit("数字输入和大小测试"); // 新建NumLimit实例

    test.setVisible(true);

    }

    }

    展开全文
  • 主要介绍了java实现文本框和文本区的输入输出的方法和具体示例,有需要的小伙伴可以参考下。
  • java文本框自动提示

    2013-07-09 11:09:20
    java文本框自动提示 源代码说明有详解
  • 事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。监视器一个对事件源进行监视,以便对发生的事件做出处理的对象。 事件源通过调用相应的方法将某个对象作为自己的监视器,例如。对于文本框,...

    三个概念:事件源, 监视器, 处理事件的接口

    事件源

    能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。 事件源必须是一个对象,而且这个对象必须是

    Java认为能够发生事件的对象。

    监视器

    一个对事件源进行监视,以便对发生的事件做出处理的对象。 事件源通过调用相应的方法将某个对象作为自己的监视器,例如。

    对于文本框,这个方法是

    addActionListener(监视器);

    对于获取了监视器的文本框对象,在文本框获得输入焦点之后,如果用户按回车键,Java运行系统就自动用ActionEvent类创建

    一个对象, 即发生了ActionEvent事件。 也就是是说,事件源获得监视器之后,相应的操作就会导致事件的发生,并通知监视器,

    监视器就会做出相应的处理。

    处理事件的接口

    监视器负责处理事件源发生的事件。 监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来

    处理事件。

    Java规定:为了让监视器这个对象能够对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须

    在类体中给出该类接口中所有方法的方法体,那么当事件源发生事件时, 监视器就自动调用执行被类实现的某个接口方法。

    java.awt.event包中提供了许多事件类和处理各事件的接口。对于文本框这个接口的名字是ActionListener,这个接口中只有一

    个方法:

    public   void   actionPerformed(ActionEvent    e);

    总结:

    其过程可以总结为:通过实现某个接口来定义一个监视器类,在这个类中给出该接口中所有方法的方法体;为某一事件源(文本框等)

    添加监视器(不同事件源添加监视器的函数可能有所不同)

    eg.

    import java.applet.*;

    import java.awt.*;

    import java.awt.event.*;

    //该ActionListener接口只有一个方法,即actionPerformed,定义类实现该接口和接口中的方法

    //监视器类

    classHandleimplementsActionListener//①实现某接口

    {

    protected TextEvent textEvent;

    public Handle(TextEvent   textEvent)                           //构造函数

    {

    this.textEvent = textEvent;

    }

    public void actionPerformed(ActionEvent e)               //②实现该接口中的所有方法

    {

    if(textEvent.text1 == e.getSource())

    {

    String word = textEvent.text1.getText();

    if(word.equals("男孩"))

    {

    textEvent.text2.setText("boy");

    }

    else if(word.equals("女孩"))

    {

    textEvent.text2.setText("girl");

    }

    else if(word.equals("太阳"))

    {

    textEvent.text2.setText("sun");

    }

    else

    {

    textEvent.text2.setText("其他情况");

    }

    } //if

    }//pubic void actionPerformed(ActionEvent   e)

    }

    public class TextEvent extends Applet      //继承自Applet,固定写法

    {

    TextField text1, text2;

    public  void init()                                     //init()函数 ,初始化,作用可见前篇文章

    {

    text1 = new TextField(10);

    text2 = new TextField(10);

    add(text1);

    add(text2);

    Handle handle = new Handle(this);      //③定义监视器类对象

    text1.addActionListener(handle);        //④添加监视器对象

    }

    }

    运行结果:

    50c13f3c03d5cf44acba1acccf53290f.png            

    0f4ce21ffbbda270008bb16b0a4b9f42.png

    6b8ac7f5ff227c4f9ce3818cff3ddf84.png

    展开全文
  • 由于Java具有桌面应用开发能力,它的图形组件中也当然配备有文本框,因而无论是继承自TextComponent的Text系组件抑或继承自JTextComponent的JText系组件都提供了让用户输入数据的功能。现在的疑问是,虽然Text...

    在任何一款桌面应用中,都难免会遇到让用户输入文字或者特殊字符的情况发生,所以输入法的支持与文本框组件的存在就变得必不可少。

    由于Java具有桌面应用开发能力,它的图形组件中也当然配备有文本框,因而无论是继承自TextComponent的Text系组件抑或继承自JTextComponent的JText系组件都提供了让用户输入数据的功能。

    现在的疑问是,虽然TextComponent与JTextComponent相类似,但两者的父类却并不同级。TextComponent直接继承自Component,但Component已经是所有Java图形组件的公共父类,JTextComponent的父类JComponent却继承自Container,而Container的父类才是Component。

    为什么会这样呢?如果JTextComponent直接继承TextComponent难道不好吗?没错,不好,或者说不能。除了Swing与AWT运行原理造成的差异与组件关系的统一性需求外,造成这样情况的理由中还有一点至关重要,那就是不光JTextComponent不能,即便我们想在java.awt包外重载TextComponent也不能。原因在于,虽然TextComponent类并非final,但它的唯一构造函数却是default的,这意味着即便不同包中的类继承了它,也不能构造,根本无法重载。

    更何况,就算可以重载的JTextComponent,也与TextComponent一样存在着一些很麻烦的默认配置问题(就更不要说重载JTextField抑或TextField了)。最主要的是,用它们制作标准文本框固然游刃有余,但如果我们需要的文本框不那么标准,甚至需要某些“奇形怪状”到只要求输入文字,但根本就算不上文本框的组件时,那么它们势必更加捉襟见肘。

    那么,我们要怎样才能满足这种近乎于“变态”的要求呢?

    很简单,自己“画”个文本框出来就好了,因为是“画”的,所以想它怎样,便是怎样,因为是凭空绘制,也没有利用现成Swing组件绘制时的不便。

    所以能这样做,就在于Java获得输入法支持的关键点不在TextComponent与JTextComponent,而是java.awt.im包下的相关组件,更具体地说,只要你实现了InputMethodListener与InputMethodRequests两尊大神,那么所有Component都可以支持输入法,又何必专情于TextComponent与JTextComponent?

    闲话少说,现在我就直接用Canvas来“画”个文本框,给大家瞧瞧。

    TextCanvas.java

    package org.test;

    import java.awt.Canvas;

    import java.awt.Color;

    import java.awt.Dimension;

    import java.awt.Font;

    import java.awt.FontMetrics;

    import java.awt.Frame;

    import java.awt.Graphics;

    import java.awt.Graphics2D;

    import java.awt.Point;

    import java.awt.Rectangle;

    import java.awt.Toolkit;

    import java.awt.event.FocusEvent;

    import java.awt.event.FocusListener;

    import java.awt.event.InputMethodEvent;

    import java.awt.event.InputMethodListener;

    import java.awt.event.KeyEvent;

    import java.awt.event.KeyListener;

    import java.awt.event.WindowAdapter;

    import java.awt.event.WindowEvent;

    import java.awt.font.FontRenderContext;

    import java.awt.font.TextAttribute;

    import java.awt.font.TextHitInfo;

    import java.awt.font.TextLayout;

    import java.awt.im.InputMethodRequests;

    import java.text.AttributedCharacterIterator;

    import java.text.AttributedString;

    import java.text.AttributedCharacterIterator.Attribute;

    import sun.awt.InputMethodSupport;

    /**

    *

    * Copyright 2009

    *

    * Licensed under the Apache License, Version 2.0 (the "License"); you may not

    * use this file except in compliance with the License. You may obtain a copy of

    * the License at

    *

    * http://www.apache.org/licenses/LICENSE-2.0

    *

    * Unless required by applicable law or agreed to in writing, software

    * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

    * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the

    * License for the specific language governing permissions and limitations under

    * the License.

    *

    * @project loonframework

    * @author chenpeng

    * @email:ceponline@yahoo.com.cn

    * @version 0.1

    */

    public class TextCanvas extends Canvas implements KeyListener, FocusListener,

    InputMethodListener, InputMethodRequests {

    /**

    *

    */

    private static final long serialVersionUID = 1L;

    // 空的字符信息迭代器

    private static final AttributedCharacterIterator EMPTY_TEXT = (new AttributedString(

    "")).getIterator();

    // 空的输入法信息

    private static final Attribute[] IM_ATTRIBUTES = { TextAttribute.INPUT_METHOD_HIGHLIGHT };

    // 判定当前组件是否具有焦点

    private transient boolean haveFocus;

    // 用户已输入数据缓存

    private StringBuffer messageText = new StringBuffer();

    // 文本布局器,用以限定输入后显示的具体位置

    private transient TextLayout textLayout = null;

    // 判定是否验证输入法布局器

    private transient boolean validTextLayout = false;

    // 文本显示位置的坐标修正值

    private static final int textOffset = 5;

    // 已输入文本定位器

    private Point textOrigin = new Point(0, 0);

    // 已输入信息的字符串构成数据

    private AttributedString composedTextString;

    // 已输入信息的字符构成数据

    private AttributedCharacterIterator composedText;

    // 插入符定位器,用以记载游标所在位置

    private TextHitInfo caret = null;

    /**

    * 构造一个TextCanvas,用以通过纯绘制的方式输入文本信息

    *

    */

    public TextCanvas() {

    super();

    this.setForeground(Color.black);

    this.setBackground(Color.white);

    this.setFontSize(12);

    this.setVisible(true);

    this.setEnabled(true);

    this.addInputMethodListener(this);

    this.addKeyListener(this);

    this.addFocusListener(this);

    try {

    Toolkit toolkit = Toolkit.getDefaultToolkit();

    boolean shouldEnable = false;

    // 验证当前环境是否支持输入法调用

    if (toolkit instanceof InputMethodSupport) {

    shouldEnable = ((InputMethodSupport) toolkit)

    .enableInputMethodsForTextComponent();

    }

    enableInputMethods(shouldEnable);

    } catch (Exception e) {

    }

    }

    /**

    * 重载Component的输入法调用接口,因为此类为InputMethodRequests的实现,所以返回this即可。

    */

    public InputMethodRequests getInputMethodRequests() {

    return this;

    }

    /**

    * 调正当前显示的字体大小

    *

    * @param size

    */

    public void setFontSize(int size) {

    setFont(new Font("Dialog", Font.PLAIN, size));

    textOrigin.x = 5;

    textOrigin.y = (textOffset + size);

    if (composedTextString != null) {

    composedTextString.addAttribute(TextAttribute.FONT, getFont());

    }

    }

    /**

    * 返回用于显示的输入信息集

    *

    * @return

    */

    public AttributedCharacterIterator getDisplayText() {

    if (composedText == null) {

    return getDisplayTextToAttributedCharacterIterator();

    } else {

    return EMPTY_TEXT;

    }

    }

    /**

    * 返回当前插入符所在位置

    *

    * @return

    */

    public TextHitInfo getCaret() {

    if (composedText == null) {

    return TextHitInfo.trailing(messageText.length() - 1);

    } else if (caret == null) {

    return null;

    } else {

    return caret.getOffsetHit(getCommittedTextLength());

    }

    }

    /**

    * 触发输入法变更事件

    */

    public void inputMethodTextChanged(InputMethodEvent e) {

    int committedCharacterCount = e.getCommittedCharacterCount();

    AttributedCharacterIterator text = e.getText();

    composedText = null;

    char c;

    if (text != null) {

    // 需要复制的字符长度

    int toCopy = committedCharacterCount;

    c = text.first();

    while (toCopy-- > 0) {

    insertCharacter(c);

    c = text.next();

    }

    if (text.getEndIndex()

    - (text.getBeginIndex() + committedCharacterCount) > 0) {

    composedTextString = new AttributedString(text, text

    .getBeginIndex()

    + committedCharacterCount, text.getEndIndex(),

    IM_ATTRIBUTES);

    composedTextString.addAttribute(TextAttribute.FONT, getFont());

    composedText = composedTextString.getIterator();

    }

    }

    e.consume();

    invalidateTextLayout();

    caret = e.getCaret();

    repaint();

    }

    /**

    * 修改插入符所在位置

    */

    public void caretPositionChanged(InputMethodEvent event) {

    caret = event.getCaret();

    event.consume();

    repaint();

    }

    /**

    * 获得指定定位符对应的文本显示位置

    */

    public Rectangle getTextLocation(TextHitInfo offset) {

    Rectangle rectangle;

    if (offset == null) {

    rectangle = getCaretRectangle();

    } else {

    TextHitInfo globalOffset = offset

    .getOffsetHit(getCommittedTextLength());

    rectangle = getCaretRectangle(globalOffset);

    }

    Point location = getLocationOnScreen();

    rectangle.translate(location.x, location.y);

    return rectangle;

    }

    /**

    * 获得偏移指定坐标的插入符信息

    */

    public TextHitInfo getLocationOffset(int x, int y) {

    Point location = getLocationOnScreen();

    Point textOrigin = getTextOrigin();

    x -= location.x + textOrigin.x;

    y -= location.y + textOrigin.y;

    TextLayout textLayout = getTextLayout();

    if (textLayout != null && textLayout.getBounds().contains(x, y)) {

    return textLayout.hitTestChar(x, y).getOffsetHit(

    -getCommittedTextLength());

    } else {

    return null;

    }

    }

    public int getInsertPositionOffset() {

    return getCommittedTextLength();

    }

    /**

    * 返回指定范围内的字符信息迭代器

    */

    public AttributedCharacterIterator getCommittedText(int beginIndex,

    int endIndex, Attribute[] attributes) {

    return getMessageText(beginIndex, endIndex);

    }

    public AttributedCharacterIterator cancelLatestCommittedText(

    Attribute[] attributes) {

    return null;

    }

    public AttributedCharacterIterator getSelectedText(Attribute[] attributes) {

    return EMPTY_TEXT;

    }

    public synchronized void update(Graphics g) {

    paint(g);

    }

    /**

    * 绘制目标界面

    */

    public synchronized void paint(Graphics g) {

    g.setColor(getBackground());

    Dimension size = getSize();

    g.fillRect(0, 0, size.width, size.height);

    g.setColor(Color.black);

    g.drawRect(0, 0, size.width - 1, size.height - 1);

    if (haveFocus) {

    g.drawRect(1, 1, size.width - 3, size.height - 3);

    }

    g.setColor(getForeground());

    TextLayout textLayout = getTextLayout();

    if (textLayout != null) {

    textLayout.draw((Graphics2D) g, textOrigin.x, textOrigin.y);

    }

    Rectangle rectangle = getCaretRectangle();

    if (haveFocus && rectangle != null) {

    g.setXORMode(getBackground());

    g.fillRect(rectangle.x, rectangle.y, 1, rectangle.height);

    g.setPaintMode();

    }

    }

    /**

    * 将messageText转化为指定范围内的字符信息迭代器

    *

    * @param beginIndex

    * @param endIndex

    * @return

    */

    public AttributedCharacterIterator getMessageText(int beginIndex,

    int endIndex) {

    AttributedString string = new AttributedString(messageText.toString());

    return string.getIterator(null, beginIndex, endIndex);

    }

    /**

    * 返回已输入的字符串信息长度

    */

    public int getCommittedTextLength() {

    return messageText.length();

    }

    public AttributedCharacterIterator getDisplayTextToAttributedCharacterIterator() {

    AttributedString string = new AttributedString(messageText.toString());

    if (messageText.length() > 0) {

    string.addAttribute(TextAttribute.FONT, getFont());

    }

    return string.getIterator();

    }

    /**

    * 返回当前文本布局器

    *

    * @return

    */

    public synchronized TextLayout getTextLayout() {

    if (!validTextLayout) {

    textLayout = null;

    AttributedCharacterIterator text = getDisplayText();

    if (text.getEndIndex() > text.getBeginIndex()) {

    FontRenderContext context = ((Graphics2D) getGraphics())

    .getFontRenderContext();

    textLayout = new TextLayout(text, context);

    }

    }

    validTextLayout = true;

    return textLayout;

    }

    /**

    * 强制文本布局器验证无效化

    *

    */

    public synchronized void invalidateTextLayout() {

    validTextLayout = false;

    }

    /**

    * 返回文本绘制点

    *

    * @return

    */

    public Point getTextOrigin() {

    return textOrigin;

    }

    /**

    * 返回对应插入点的矩形选框

    *

    * @return

    */

    public Rectangle getCaretRectangle() {

    TextHitInfo caret = getCaret();

    if (caret == null) {

    return null;

    }

    return getCaretRectangle(caret);

    }

    /**

    * 返回对应插入点的矩形选框

    *

    * @param caret

    * @return

    */

    public Rectangle getCaretRectangle(TextHitInfo caret) {

    TextLayout textLayout = getTextLayout();

    int caretLocation;

    if (textLayout != null) {

    caretLocation = Math.round(textLayout.getCaretInfo(caret)[0]);

    } else {

    caretLocation = 0;

    }

    FontMetrics metrics = getGraphics().getFontMetrics();

    return new Rectangle(textOrigin.x + caretLocation, textOrigin.y

    - metrics.getAscent(), 0, metrics.getAscent()

    + metrics.getDescent());

    }

    /**

    * 插入指定字符串

    *

    * @param c

    */

    public void insertCharacter(char c) {

    messageText.append(c);

    invalidateTextLayout();

    }

    /**

    * 用户输入

    */

    public void keyTyped(KeyEvent event) {

    char keyChar = event.getKeyChar();

    // 处理文字删除

    if (keyChar == '/b') {

    int len = messageText.length();

    if (len > 0) {

    messageText.setLength(len - 1);

    invalidateTextLayout();

    }

    } else {

    insertCharacter(keyChar);

    }

    event.consume();

    repaint();

    }

    public void keyPressed(KeyEvent event) {

    }

    public void keyReleased(KeyEvent event) {

    }

    public void focusGained(FocusEvent event) {

    haveFocus = true;

    repaint();

    }

    public void focusLost(FocusEvent event) {

    haveFocus = false;

    repaint();

    }

    public static void main(String[] args) {

    Frame frame = new Frame("绘制一个输入框");

    TextCanvas text = new TextCanvas();

    frame.add(text);

    frame.addWindowListener(new WindowAdapter() {

    public void windowClosing(WindowEvent e) {

    System.exit(0);

    }

    });

    frame.pack();

    frame.setSize(300, 300);

    frame.setLocationRelativeTo(null);

    frame.setVisible(true);

    }

    }

    运行效果如下图:

    20091118_canvas_00.jpg

    怎么样?这时你在TextCanvas中进行输入操作,是不是与JTextField或TextField里相差无几呢?——什么?你说就算“重复发明轮子”也应该有个限度,已经有JTextField与TextField了,你再写一个有什么用?

    嗯,您很聪明,单纯的绘制文本框确实没有任何意义,但是,如果有一系列直接通过AWT绘制的组件与其相呼应呢?——比如,偶在LGame-Simple中制作的那一系列UI组件……

    那么事情,就会变成如下这个样子。

    20091118_canvas_02.jpg

    怎么样呢?如上图所示,这是一个纯绘制的界面,无论文本框的字体,大小,颜色乃至透明度,贴图都可以随性切换(甚至逆天的将两个文本框叠在一起也可以), 而这样一个纯绘制出的文本框能够获得输入法支持,意味着什么呢?这意味着,一个相对于Swing能耗更少,效率更高的类Swing体系已经搭建成型了!(当然,相对的功能也更少,不过事无两利嘛……)

    PS:如上所述,LGame-Simple-0.2.5版Text系组件将获得输入法支持,中文或其它语言的输入已经没有任何问题。(此版预计同Android版LGame一道于12月中下旬发布……不过,那是理想状态,事实上偶欠着的事情挺多,尽力看看……)

    嗯,其实PS中的话才是最主要的……

    展开全文
  • 展开全部要在文本框62616964757a686964616fe58685e5aeb931333361303635输入之后敲回车在标签中显示,需要给文本框加上ActionListener监听器,并重写其actionPerformed方法,完整的Java程序如下:(改动的地方见注释,...

    展开全部

    要在文本框62616964757a686964616fe58685e5aeb931333361303635输入之后敲回车在标签中显示,需要给文本框加上ActionListener监听器,并重写其

    actionPerformed方法,完整的Java程序如下:(改动的地方见注释,当"输入选号"为空时回车,会把"当前选号"置为空)import java.awt.BorderLayout;

    import java.awt.FlowLayout;

    import java.awt.Font;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;//这里导入监听接口

    import javax.swing.BorderFactory;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;

    import javax.swing.JTextArea;

    import javax.swing.JTextField;

    public class CCG extends JFrame implements ActionListener{//这里加监听接口

    JLabel jl1=new JLabel("35选7",JLabel.LEFT);

    JLabel jl2=new JLabel("输入选号:");

    JLabel jl3=new JLabel("当前选号:");

    JLabel jl4=new JLabel();    //这里改一下

    JTextField jtf=new JTextField(5);

    JTextArea jta=new JTextArea(5,20);

    JButton jb1=new JButton("添加本组号码");

    JButton jb2=new JButton("验证并保存到文件");

    JPanel jp1=new JPanel();

    JPanel jp2=new JPanel();

    JPanel jp3=new JPanel();

    JPanel jp4=new JPanel();

    JPanel jp5=new JPanel();

    JPanel jp6=new JPanel();

    JPanel jp7=new JPanel();

    CCG(){

    super("Lottery");

    jtf.addActionListener(this);   //这里加监听器

    jl1.setFont(new Font(null,Font.BOLD,20));

    jp1.setLayout(new FlowLayout(FlowLayout.LEFT));

    jp1.add(jl1);

    jp1.setBorder(BorderFactory.createEtchedBorder ());

    jp4.setLayout(new FlowLayout(FlowLayout.LEFT));

    jp4.add(jl2);jp4.add(jtf);

    jp5.setLayout(new FlowLayout(FlowLayout.LEFT));

    jp5.add(jl3);jp5.add(jl4);

    jp6.setLayout(new FlowLayout(FlowLayout.LEFT));

    jp6.add(jb1);

    jp2.setLayout(new GridLayout(3,1));

    jp2.add(jp4);jp2.add(jp5);jp2.add(jp6);

    jp2.setBorder(BorderFactory.createEtchedBorder ());

    jp3.setLayout(new FlowLayout(FlowLayout.LEFT));

    jp3.add(jta);jp3.add(jb2);

    jp3.setBorder(BorderFactory.createEtchedBorder ());

    jp7.setLayout(new GridLayout(2,1));

    jp7.add(jp2);

    jp7.add(jp3);

    add(jp1,BorderLayout.NORTH);

    add(jp7,BorderLayout.CENTER);

    setSize(400, 300);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    setLocationRelativeTo(null);

    setVisible(true);

    }

    @Override

    public void actionPerformed(ActionEvent ae) {//这里加监听函数

    if(ae.getSource()==jtf){

    if(jtf.getText().equals("")){

    jl4.setText("");

    }else{

    if(jl4.getText().equals("")){

    jl4.setText(jtf.getText());

    }else{

    jl4.setText(jl4.getText()+","+jtf.getText());

    }

    }

    }

    }

    public static void main(String[] args) {

    new CCG();

    }

    }

    运行结果:

    f4f5264d687398ad9f125d08ccc26278.png

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼具体的代码在这里:import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io....
  • 我创建了一个文本框,如何判断用户输入一定字符后自动添加空格或“-”, 因为我要用文本框获取用户输入的时间字符串然后转成time类型传到数据库。 然后我想便于用户输入,所以想添加这么一个功能。 比如用户 是要...
  • Java文本框和文本区的输入输出

    千次阅读 2018-08-06 13:34:24
    在GUI中,常用文本框和文本区实现数据的输入和输出。如果采用文本区输入,通常另设一个数据输入完成按钮。当数据输入结束时,点击这个按钮。事件处理程序利用getText()方法从文本区中读取字符串信息。对于采用文本框...
  • import javax.swing.JTextField;import javax.swing.text.AttributeSet;import javax.swing.text.BadLocationException;import javax.swing.text.Document;import javax.swing.text.PlainDocument;...
  • JAVA文本框根据输入内容自动模糊查询(动态)

    万次阅读 多人点赞 2017-09-23 07:29:03
    JAVA文本框根据输入内容自动模糊查询数据库(增删动态查询)
  • JAVA WEB在不使用任何插件实现文本框输入自动补全源码
  • 文本框输入限制

    2021-02-26 17:22:25
    3只能输入字母和汉字4只能输入英文字母和数字,不能输入中文5只能输入数字和英文chun6小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:7小数点后只能有最多两位(数字,字母,中文都可输入),可以输入...
  • java联想功能文本输入

    2018-07-14 09:18:47
    这是利用已有的文件控件与列表控件实现具有联想与记忆功能的文本输入控件。该控件为达到以下要求:(1)列表控件具有动态显示功能,即根据输入的内容动态显示联想内容;(2)具有记忆功能,即能记住以前输入的内容;...
  • JAVA不像C#能够有maxLength这个属性对文本框输入长度进行控制,但也是有办法实现相应的功能的。写一个MyDocument类,继承PlainDocument。重写insertString(int offset,String str,AttributeSet a)方法。代码如下:...
  • Java Frame 从文本框输入,在文本区输出

    万次阅读 多人点赞 2018-03-22 16:43:57
    import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;...
  • importjavax.swing.*;importjavax.swing.text.*;publicclassDemoText{publicstaticvoidmain(finaljava.lang.String[]args){java.awt.EventQueue.invokeLater(newjava.lang.Runnable(){@Overridepublic...
  • this.textField=newccui.TextField();//定义一个文本框this.textField.setMaxLengthEnabled(true);...//文本框内可输入多少东西th...this.textField = new ccui.TextField(); //定义一个文本框this.t...
  • java 获取文本框用户输入的内容

    千次阅读 2021-02-28 17:09:19
    我现在有一个问题初学JAVA真心不会啊~求大神帮忙!我在ComponentInWindow.java写的下列代码importjava.awt.*;importjavax.swing.*;importjava.awt.event.KeyEvent;importstaticjavax....我现在有一个问题 初学JAVA...
  • [Java教程]文本框倒叙输入0 2014-09-01 14:00:54所谓的文本框倒叙输入是指输入框的焦点始终在最开始的位置,如图所示,当我输入123456789时,在输入框上显示的是987654321。为什么要做这个Demo?是因为在项目中遇到...
  • JAVA限制文本框输入

    千次阅读 2016-03-31 19:11:58
    我们在做JAVA GUI开发的时候,有的时候需要对文本框中的内容进行限制,比如最大长度、转换为大写等。今天就为大家介绍一下该如何实现。通过查阅JDK API,我们可以知道,在JTextField中提供了setDocument(Document ...
  • Java文本框、密码框的使用

    万次阅读 多人点赞 2017-08-24 10:18:53
    1.文本框的使用package com.Swing; import javax.swing.*;...import java.awt.event.*; public class TextFieldExample implements ActionListener { JTextField tf1, tf2, tf3; JButton b1, b2; TextFieldExample
  • 下面是一个java文本框自动补全的例子 &lt;font face="宋体"&gt;&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "...
  • java 文本框提示文字

    千次阅读 2021-03-04 01:51:23
    import java.awt.FlowLayout;import java.awt.event.FocusAdapter;import java.awt.event.FocusEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;public cla...
  • java-swing-JTextField(可输入文本框): package com.etc.jtextfield; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * JTextField ...
  • import java.awt.*;import java.awt.event.*;public class TextFieldWithLimit extends TextFieldimplements KeyListener {private int maxLength;public TextFieldWithLimit(String initialStr,int col,int maxLen....
  • 展开全部代码62616964757a686964616fe59b9ee7ad9431333366303137如下:importjava.awt.Dimension;importjava.awt.FlowLayout;importjavax.swing.JButton;importjavax.swing.JComboBox;importjavax.swing.JFrame;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,356
精华内容 21,742
关键字:

java文本框输入

java 订阅