Java Swing JTextfield设置类似placeholder属性

  • 前言:使用swing 写客户端时,遇到输入框有这种要求。因为有些输入框没有标题,用户不知道该如何填写,用户体验不好。

但是我看网上的解决办法都太过繁琐,下面写个简单的实现方式

  • 废话不多说,先看看效果图
    左右两边的第二个 输入框都实现了类似于placeholder属性
  • 鼠标不在输入框上:

鼠标移出

  • 鼠标悬停在输入框上

在这里插入图片描述
这里因为是截图,所以鼠标看不见。

  • 具体实现
  • 先说说思路
  1. 声明并创建输入框对象,我这里的 astigmatismLeftEye 是声明的属性
    在这里插入图片描述
		astigmatismLeftEye = new JTextField();
        astigmatismLeftEye.setBounds(677, 182, 120, 30);
        astigmatismLeftEye.setBorder(null);
        astigmatismLeftEye.setOpaque(false); // 设置透明
        astigmatismLeftEye.setEditable(false);// 设置不可编辑
        astigmatismLeftEye.setToolTipText("左眼散光");
        astigmatismLeftEye.addMouseListener(this); // 添加鼠标事件
  1. 设置默认属性
    /**
     * 设置散光的placeholder属性
     */
    private void checkAstPlaceholder() {
        // 使用数组装载输入框对象,多个输入框需要这个属性故使用数组
        JTextField[] ts = {astigmatismLeftEye,astigmatismRightEye,astigmatismLeft2Eye,astigmatismRight2Eye};
        // 循环检验文本内容
        for (int i = 0;i<ts.length;i++)
            checkText(ts[i]);
    }

     /**
     * 校验内容是否为空,如果为空,则设置placeholder属性
     * @param textField
     */
    private void checkText(JTextField textField) {
    	// 判断输入框里是否有内容,没有就进行默认设置
        if (textField.getText() == null||"".equals(textField.getText())) {
            // 提示内容
            textField.setText(RemindConstant.PLACE_INPUT_AST);
            textField.setFont(new Font("仿宋",Font.ITALIC,14));
        }
    }

常量类
在这里插入图片描述
3. 设置事件,前面已经添加鼠标事件,下面才是重头戏

	// 鼠标移入事件
	@Override
    public void mouseEntered(MouseEvent e) {
        Object source = e.getSource();
        if (source == astigmatismLeftEye) {
            String text = astigmatismLeftEye.getText();
            if (text.equals(RemindConstant.PLACE_INPUT_AST)) { // 移入时,如果是提示内容,则清空
                astigmatismLeftEye.setText("");
            }
        }

        if (source == astigmatismRightEye) {
            String text = astigmatismRightEye.getText();
            if (text.equals(RemindConstant.PLACE_INPUT_AST)) {
                astigmatismRightEye.setText("");
            }
        }

        if (source == astigmatismLeft2Eye) {
            String text = astigmatismLeft2Eye.getText();
            if (text.equals(RemindConstant.PLACE_INPUT_AST)) {
                astigmatismLeft2Eye.setText("");
            }
        }

        if (source == astigmatismRight2Eye) {
            String text = astigmatismRight2Eye.getText();
            if (text.equals(RemindConstant.PLACE_INPUT_AST)) {
                astigmatismRight2Eye.setText("");
            }
        }
    }
    
	// 鼠标移出事件
    @Override
    public void mouseExited(MouseEvent e) {
        Object source = e.getSource();
        if (source == astigmatismLeftEye) {
            String text = astigmatismLeftEye.getText();
            if (text == null||"".equals(text)) { // 移出时没有发现内容,则设置为提示内容
                astigmatismLeftEye.setText(RemindConstant.PLACE_INPUT_AST);
            }
        }

        if (source == astigmatismRightEye) {
            String text = astigmatismRightEye.getText();
            if (text == null||"".equals(text)) {
                astigmatismRightEye.setText(RemindConstant.PLACE_INPUT_AST);
            }
        }

        if (source == astigmatismLeft2Eye) {
            String text = astigmatismLeft2Eye.getText();
            if (text == null||"".equals(text)) {
                astigmatismLeft2Eye.setText(RemindConstant.PLACE_INPUT_AST);
            }
        }

        if (source == astigmatismRight2Eye) {
            String text = astigmatismRight2Eye.getText();
            if (text == null||"".equals(text)) {
                astigmatismRight2Eye.setText(RemindConstant.PLACE_INPUT_AST);
            }
        }
    }

不懂得看看注释吧,注释写的详细。

这样placeholder属性就实现了,是不是很简单?

  • 这事基础版,想要更多效果,自己可以调试丰富哦!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用JTextField的getText()方法获取字符串,然后使用Integer.parseInt()方法将字符串转换为整数类型。例如: JTextField textField = new JTextField(); int num = Integer.parseInt(textField.getText()); ### 回答2: 在JavaSwing组件中,JTextField是一个可编辑的文本框,可以用来输入各种类型的数据,包括整数类型。要从JTextField中获取整数类型的值,需要首先获取JTextField中的文本内容,然后将文本内容转换为整数类型。 获取JTextField中的文本内容可以通过JTextField的getText()方法来实现,例如: ``` String text = jTextField.getText(); ``` 这将返回JTextField中当前的文本内容。接下来需要将文本内容转换为整数类型。转换整数类型有两种方法,一种是使用Integer类的parseInt()方法,另一种是使用Integer类的valueOf()方法。 使用parseInt()方法的示例代码如下: ``` String text = jTextField.getText(); int value = Integer.parseInt(text); ``` 这将返回JTextField中的文本内容转换为整数类型的值。需要注意的是,如果JTextField中的文本内容无法转换为整数类型,将会抛出NumberFormatException异常。 使用valueOf()方法的示例代码如下: ``` String text = jTextField.getText(); Integer integer = Integer.valueOf(text); int value = integer.intValue(); ``` 这将返回JTextField中的文本内容转换为包装类型Integer对象,并将其转换为整数类型的值。需要注意的是,如果JTextField中的文本内容无法转换为整数类型,将会抛出NumberFormatException异常。 总的来说,从JTextField中获取整数类型的值可以使用parseInt()方法或valueOf()方法,需要注意文本内容的格式和异常处理。 ### 回答3: Java Swing中的JTextField组件可以用于获取用户输入的文本信息,但是如何从中获取int类型的数据呢? 首先,我们需要了解JTextField的getText()方法,这个方法会返回一个字符串类型的值,即用户在文本框中输入的内容。因此,我们需要将这个字符串类型的值转换成int类型。 可以使用Java中提供的Integer.parseInt()方法,该方法可以将字符串转换为int类型的值。这个方法的使用非常简单,只需将JTextField组件中的getText()方法返回的值作为参数传入即可。 如下代码所示,将JTextField组件中获取到的字符串转换成int类型并赋给一个整型变量: ``` JTextField textField = new JTextField("123"); int num = Integer.parseInt(textField.getText()); ``` 需要注意的是,如果用户在文本框中输入的内容不是合法的数字类型,比如输入了字母或空格等,那么调用Integer.parseInt()方法时会抛出NumberFormatException异常。因此,在进行转换前需要进行输入验证,确保输入的内容是合法的数字类型。 同时,还可以使用JFormattedTextField组件,它可以设置格式化输入内容的方式,比如只能输入数字、小数点等特定字符。这样可以有效地避免用户输入非法的内容,从而保证程序的正常运行。 总之,获取JTextField中的int类型数据需要将字符串类型的值转换成int类型,同时需要进行输入验证确保输入的内容是合法的数字类型。如果需要更精确的输入控制,可以使用JFormattedTextField组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值