`
tuxq5721
  • 浏览: 34541 次
社区版块
存档分类
最新评论

Swing —— 限制JTextArea只能输入浮点数

阅读更多

下面是示例代码: 

[复制源代码]

class JTextFieldFilterextends PlainDocument {

public static final StringFLOAT = "0123456789.";

protected String acceptedChars = null;

protected boolean negativeAccepted =false;

 

public JTextFieldFilter() {

this(FLOAT);

}

 

public JTextFieldFilter(String acceptedChars) {

this.acceptedChars = acceptedChars;

}

 

/**

 *设置是否接受负号

 *

 * @param negativeAccepted

 *           是否接受负号

 */

public void setNegativeAccepted(boolean negativeAccepted) {

if (acceptedChars.equals(FLOAT)) {

this.negativeAccepted = negativeAccepted;

acceptedChars += "-";

}

}

 

public void insertString(int offset, String str, AttributeSet attr)

throws BadLocationException {

 

//判断输入的是否为允许的字符

for (int i = 0; i < str.length(); i++) {

if (!acceptedChars.contains(str)) {

return;

}

}

 

//判断当前输入的是否为".",如果有了再判断前面有没有输入过

if (acceptedChars.equals(FLOAT)

|| (acceptedChars.equals(FLOAT +"-") && negativeAccepted)) {

if (str.contains(".")) {

if (getText(0, getLength()).contains(".")) {

return;

}

}

}

 

//判断如果支持负数,那么负号(-)必须在第一位

if (negativeAccepted) {

if (str.indexOf("-") != 0 || offset != 0) {

return;

}

}

 

super.insertString(offset, str, attr);

}

}

 

publicclass Main extends JFrame {

 

public static void main(String[] argv)throws Exception {

new Main();

}

 

public Main() {

setLayout(new FlowLayout());

JLabel lb = new JLabel("only float");

JTextField tf = new JTextField(10);

getContentPane().add(lb);

getContentPane().add(tf);

tf.setDocument(new JTextFieldFilter(JTextFieldFilter.FLOAT));

setSize(300, 300);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

  • 大小: 4.2 KB
分享到:
评论

相关推荐

    重定向log4j日志到jtextarea

    而JTextArea是Swing组件库中的一个文本区域,常用于显示多行文本,用户可以读取但不能编辑。在某些情况下,我们可能希望将Log4j的日志输出直接重定向到JTextArea,以便于在GUI应用程序中实时查看日志信息。这在调试...

    java_JTextArea_实现不可修改文本内容、右键菜单

    ### Java Swing JTextArea 实现不可修改文本内容及右键菜单定制 #### 一、概述 在Java Swing开发中,`JTextArea` 是一个非常常用的组件,用于显示或编辑多行文本。有时候,我们可能需要创建一个只读的文本区域或者...

    java swing-JTextArea的使用

    JTextArea是Swing库提供的一个多行文本编辑框组件,可以用于在GUI应用程序中显示和编辑大段文本。

    JAVA初级编码——继承JDialog, 利用JTextArea显示文档中的内容

    在Java编程语言中,"JAVA初级编码——继承JDialog, 利用JTextArea显示文档中的内容"这个主题涉及到了两个核心概念:JDialog和JTextArea。JDialog是Java Swing库中的一个组件,它用于创建独立于主应用程序窗口的...

    swing jtextArea滚动条和文字缩放效果

    "swing jtextArea滚动条和文字缩放效果详解" swing jtextArea是Java Swing中的一种组件,用于显示多行文本。今天,我们将详细介绍swing jtextArea滚动条和文字缩放效果,并提供了相关的代码实例。 首先,让我们...

    JTextArea 实现行号

    在Java Swing库中,`JTextArea` 是一个用于显示和编辑多行文本的组件。有时候在编程时,我们可能需要为 `JTextArea` 添加行号功能,以方便用户阅读和编辑代码或者数据。这个功能可以通过自定义边框来实现,就像标题...

    swing中文乱码问题(Linux和window)

    ### Swing中文乱码问题(Linux和Windows) #### Linux系统下的解决方案 在Linux系统下使用Swing进行GUI开发时,可能会遇到中文乱码的问题。解决这一问题通常需要对系统的编码环境进行适当的配置。以下是一个详细的...

    Java弹出菜单,为JTextArea添加了右键弹出式菜单,实现了复制、粘贴、剪切

    今天,我们将学习如何使用 Java 弹出菜单来为 JTextArea 添加右键弹出式菜单,实现复制、粘贴、剪切功能。 一、Java 弹出菜单概述 Java 弹出菜单是一种 context-sensitive 菜单,即在用户点击右键时出现的菜单。它...

    swing聊天室

    【Swing聊天室】是一个基于Java Swing库实现的简单在线交流平台。Swing是Java标准版(Java SE)的一部分,提供了丰富的用户界面组件,用于构建桌面应用程序。在这个聊天室项目中,用户可以通过客户端进行文字交流,...

    用swing制作的简单图书管理系统

    Swing的组合框(JComboBox)可用于选择操作类型,文本组件(JTextField、JTextArea)用于输入或显示详细信息。 三、数据库交互 系统通过Java的JDBC(Java Database Connectivity)接口与数据库进行通信。在Swing...

    swing计算器,swing计算器 swing计算器

    Swing计算器是一款基于Java Swing库开发的简单计算工具。Swing是Java的一种图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,主要用于构建桌面应用程序。本项目的核心在于利用Swing组件来...

    Swing组件应用实例

    Swing组件是Java GUI(图形用户界面)编程中的核心元素,它是Java Foundation Classes (JFC) 的一部分。Swing提供了一系列丰富的组件,用于构建功能强大的桌面应用程序。在本实例中,我们将深入探讨Swing组件的使用...

    java swing漂亮界面 超酷 javaswing教程

    首先,Swing提供了丰富的组件库,包括JButton、JLabel、JTextField、JTextArea、JComboBox、JCheckBox、JRadioButton等,这些组件可以组合使用以创建各种复杂界面。例如,JFrame是窗口的基础,JPanel则可以作为容器...

    Java Swing JTextArea文本区域的实现示例

    Java Swing JTextArea 文本区域的实现示例 Java Swing JTextArea 文本区域是 Java Swing 库中的一种基本组件,用于编辑多行文本。JTextArea 组件可以编辑多行文本,并提供了许多有用的方法来处理文本。 概述 ...

    JAVA swing中文离线API文档

    例如,`JFrame`是窗口的基础,`JButton`用于创建按钮,`JLabel`用来展示文本或图像,而`JTextArea`和`JTextField`则提供了文本输入和显示的功能。此外,Swing还提供了诸如`JTable`和`JList`这样的组件,用于展示和...

    java swing管理系统源码 程序 代码 图形界面(11套).zip

    例如,使用JTable展示数据库查询结果,JButton触发业务逻辑,JComboBox提供选择项,JTextField和JTextArea用于输入和展示文本。每个系统可能包含不同的功能模块,如用户管理、权限控制、报表生成等,源码示例可以...

    JavaSwing编程demo

    例如,JButton 可以创建按钮,JLabel 用于展示文本或图像,JTextField 用于输入文本,JTextArea 用于多行文本输入,JCheckBox 和 JRadioButton 则常用于选项选择。 布局管理器是Swing中的关键概念,它负责控制组件...

    swing开发的源代码

    4. **JButton, JTextField, JLabel, JTextArea**:这些是Swing的基本组件,分别代表按钮、单行文本输入框、标签和多行文本区域。它们构成了用户界面的基本元素。 5. **布局管理器(Layout Managers)**:Swing提供...

    Java_Swing的复杂控件

    例如,在示例1中,我们使用JTextArea和JScrollPane创建了一个文本域练习的界面,用户可以输入信息,然后将信息追加到文本域中,并可以滚动查看。 此外,JTextArea还可以触发DocumentEvent事件,当文本区中的文本...

    售楼管理系统 java-swing

    本系统——"售楼管理系统"就是一个典型的Java-Swing应用实例,非常适合初学者或有经验的开发者用来学习和研究Swing的使用。 在Java-Swing中,我们首先会接触到JFrame,它是所有窗口应用的基础,相当于窗口容器,...

Global site tag (gtag.js) - Google Analytics