天道酬勤,学无止境

How to specify a range of valid values in a Java GUI

I am creating an IMDB application which displays and organizes movies found on you computer (by looking up the metadata via an IMDB API).

In my search panel I want to give the user the option of looking for movies that were released in a specific range of years (e.g. between 1990 and 2005). Currently I use for this two JSpinners, one for the minimum year and one for the maximum year and use cross validation to check whether maxYear >= minYear && minYear <= maxYear However I don't think this is very user-friendly.

What I would like is a JSlider with two knobs, one for min and one for max. Is this possible? Do you have any other ideas on how to make this interface more user-friendly?

评论

This looks promising: Creating a Java Swing range slider

And here's another example that I think came from the old Tame examples: MThumbSlider

You could have two JTextFields, and just let the user type the minimum and maximum years.

Otherwise, two JSpinners is another choice. Developing a custom component that your users have never seen is not user friendly.

You can cross connect the two JSpinners so that it's impossible for the user to enter a minimum year greater than a maximum year. I've not done this, so I don't have a code example to show you.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Tkinter Spinbox 范围验证(Tkinter Spinbox range validation)
    问题 我正在尝试利用 Bryan Oakley 的这个优秀答案,但无济于事(https://stackoverflow.com/a/4140988/5060127)... 我想使用相同的方法来验证 Spinbox 值。 我已经为旋转框定义了 from_ 和 to 值,但是用户仍然可以在其中输入大部分内容......应该验证用户只能输入 from_-to 范围内的值,并且只能输入整数。 这是显示我已经走了多远的代码...... try: from Tkinter import * except ImportError: from tkinter import * class GUI: def __init__(self): # root window of the whole program self.root = Tk() self.root.title('ImageSound') # registering validation command vldt_ifnum_cmd = (self.root.register(self.ValidateIfNum),'%s', '%S') # creating a spinbox harm_count = Spinbox(self.root, from_=1, to=128, width=5, justify='right'
  • 黑盒测试【入门篇】
    概述 黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。   采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。 【黑盒测试】试图发现以下类型的错误: 1)功能错误或遗漏; 2)界面错误; 3)数据结构或外部数据库访问错误; 4)性能错误; 5)初始化和终止错误。 一、黑盒测试的测试用例设计方法 · 等价类划分方法 · 边界值分析方法 · 错误推测方法 · 因果图方法 · 判定表驱动分析方法 · 正交实验设计方法 · 功能图分析方法 等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。 1) 划分等价类: 等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。因此,可以把全部输入数据合理划分为若干等价类
  • Java数据校验框架hibernate-validate
    1、引言 在我们做后端开发的时候,如果遇到一些情况是需要进行数据检验的,你如果还使用if-else,就显得很low,而且效率非常低。如果你是校验几个还行,但是校验很多呢,这时候使用if-else就显得非常麻烦。下面介绍一款能够对数据进行校验的框架hibernate-validate 2、什么是Hibernate Validator Hibernate Validator是Hibernate提供的一个开源框架,使用注解方式非常方便的实现服务端的数据校验。 官网:http://hibernate.org/validator/ 在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效。 maven依赖 <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency> 3、Bean校验注解 常用的注解如下 Constraint详细信息@Valid被注释的元素是一个对象,需要检查此对象的所有字段值@Null被注释的元素必须为 null@NotNull被注释的元素必须不为 null@AssertTrue被注释的元素必须为 true@AssertFalse被注释的元素必须为 false
  • java - 在存储文件中进行更新后,如何在java中自动刷新gui屏幕?(How to auto refresh gui screen in java, after update taking place in a stored file?)
    问题 我有一个 java swing 应用程序,它从 .text 文件中读取其组件的值。 我正在尝试更新其值之一并将其存储在 .text 文件中,然后可能还需要在 GUI 屏幕中进行刷新。 文件中的值已修改,但 GUI 无法在不重新启动的情况下检测到更改。 我已经使用计时器完成了 repaint()、re-validate()。 谁能指定我能做什么? 提前致谢。 回答1 您需要监视文件并在文件更改时触发事件。 此事件必须设置将强制组件自动刷新的组件值。 回答2 一个很好的解决方案是将所有 GUI 组件存储在 ArrayList 或您可能喜欢的某种其他类型的 List 中。 您最初会读取文本文件并将其各自的组件添加到列表中,然后将该列表加载到您的 GUI 中。 当文件被编辑时,您可以再次循环,如果列表中不存在组件,您可以添加它。如果列表中的任何组件与文件不对应,您可以将它们从列表中删除。 之后,您可以使用列表中的组件重新加载 GUI。
  • How to auto refresh gui screen in java, after update taking place in a stored file?
    I have a java swing application which reads the values for its components from a .text file. I'm trying to update one of its value and store it in .text file and then need a refresh possibly in the GUI screen as well. Value is modified in the file but GUI could not detect the change without a restart. I have went through repaint(), re-validate() with the use of timers. Can anyone specify what i could do? Thanks in advance.
  • GUI(用于输入和输出矩阵)?(GUI (to input and output matrices)?)
    问题 我需要创建一个GUI,以将数据输入到矩阵或表格中并读取此表单数据。 完美的解决方案是将输入形式限制为仅允许float 。 例如: A=[[1.02,-0.25,-0.30,0.515],[-0.41,1.13,-0.15,1.555],[-0.25,-0.14,1.21,2.780]] 问题: 我可以使用什么? Tkinter没有表,Python 3.3.2不支持wxPython PyQt4呢? 也许您可以举一些例子,说明如何从[[],[],[]]表中获取数据? 有人有主意吗? 谢谢 回答1 使用tkinter,您不需要特殊的表格小部件即可执行此操作,只需创建一个普通条目小部件的网格即可。 如果有太多需要滚动条的地方,它会稍微困难一些(此站点上有一些示例,说明如何做到这一点),但是仅创建一个很小的网格就非常简单了。 这是一个示例,其中还包括一些输入验证: import tkinter as tk class SimpleTableInput(tk.Frame): def __init__(self, parent, rows, columns): tk.Frame.__init__(self, parent) self._entry = {} self.rows = rows self.columns = columns # register a command to use
  • 描述时间范围的最佳 GUI 控件(Best GUI control(s) to describe a time range)
    问题 我需要让最终用户指定一个时间范围,作为开始日期/时间和结束日期/时间在内部存储和使用。 范围可能是几分钟,也可能是几天。 有没有人发现可以优雅地处理这个的交互式控件? 大多数 GUI 工具包都有一个日历控件,所以我可以用一天的日历和时间的文本字段指定“开始”……“结束”也是如此。 我还可以用单个文本字段或滑块替换“结束”控件,该字段或滑块仅描述开始“结束”后多少秒/分钟/小时。 我不喜欢这些想法的一点是,描述这样一个简单的概念需要多少点击、打字和更​​多的点击。 此外,如果输入的时间无法识别为时间,我还必须拍打用户的手。 有没有我忽略的更干净的实现? 回答1 当我思考诸如此类的问题时,我倾向于从常见的设计模式中寻找灵感。 雅虎模式库提供了一些潜在的解决方案。 UI Patterns 站点也给出了一些建议,值得一看。 为了更好地衡量,这里是 Welie 模式库中的另一个解决方案。 另一个灵感来源可能是其他网站和应用程序。 例如,考虑需要记录短时间和长时间持续时间的所有用例。 例如,公司 TimeSheet 记录、公司汽车里程日志软件、任务记录软件、秒表应用程序、日历应用程序等。然后看看他们如何处理用于捕获时间范围的 GUI 控件。 我个人还没有找到最喜欢的选择日期和时间的解决方案。 但是,我想我想要这样的东西。 用户单击以显示日历弹出窗口弹出窗口显示2个并排日历(开始日期
  • springboot 使用 JSR 303 进行参数验证
    一、JSR 303 是什么? JSR-303 是 Java EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是hibernate Validator。 二、JSR 303 能做什么? 1.JSR 303 用于对java Bean 中的字段的值进行验证,使得基本的验证逻辑可以从业务代码中脱离出来。2.是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。 三、都有些什么验证? hibernate Validator对JSR303做了比较全面的实现,springboot 自带,并且还额外提供了一些实现,如下: Constraint说明作用类型@Null被注释的元素必须为 null引用类型@NotNull被注释的元素必须不为 null引用类型@AssertTrue被注释的元素必须为 trueboolean@AssertFalse被注释的元素必须为 falseboolean@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值byte、short、int、long及对应的包装类型以及BigDecimal、BigInteger@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值byte、short、int、long及对应的包装类型以及BigDecimal、BigInteger@DecimalMin
  • 无效值的 JTable 警报(JTable Alert on invalid value)
    问题 所以我有一个带有自定义模型的可编辑 Jtable(实际上是 TreeTable)。 当前的 setValueAt 方法需要更新以防止值大于一定数量(取决于行)。 这很容易防止(如果值无效,只需不要设置该值),但是通知用户所选金额无效的最佳方法是什么? 从模型中弹出一个对话框似乎很讨厌。 回答1 从模型中弹出一个对话框似乎很讨厌。 同意。 对列使用自定义编辑器。 也许是这样的: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import javax.swing.border.*; import javax.swing.table.*; public class TableEdit extends JFrame { TableEdit() { JTable table = new JTable(5,5); table.setPreferredScrollableViewportSize(table.getPreferredSize()); JScrollPane scrollpane = new JScrollPane(table); getContentPane().add
  • 使用自己的 Java 代码在 WEKA 中获取风险预测(Get risk predictions in WEKA using own Java code)
    问题 我已经检查了 WEKA 的“进行预测”文档,它包含有关命令行和 GUI 预测的明确说明。 我想知道如何使用我自己的 Java 代码中的Agrawal数据集( weka.datagenerators.classifiers.classification.Agrawal )从 GUI 中获得如下所示的预测值: inst#, actual, predicted, error, prediction 1, 1:0, 2:1, +, 0.941 2, 1:0, 1:0, , 1 3, 1:0, 1:0, , 1 4, 1:0, 1:0, , 1 5, 1:0, 1:0, , 1 6, 1:0, 1:0, , 1 7, 1:0, 2:1, +, 0.941 8, 2:1, 2:1, , 0.941 9, 2:1, 2:1, , 0.941 10, 2:1, 2:1, , 0.941 1, 1:0, 1:0, , 1 2, 1:0, 1:0, , 1 3, 1:0, 1:0, , 1 即使它说: 爪哇如果您想在自己的代码中执行分类,请参阅本文的分类实例部分,对 Weka API 进行了一般性解释。 我去了链接,它说: 分类实例如果您想使用新训练的分类器对未标记的数据集进行分类,则可以使用以下代码片段。 它加载文件/some/where/unlabeled.arff
  • java 后端校验_如何实现Java后端数据校验?看这篇就足够!
    前言 每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理、统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Validate等js/css插件实现通过数据校验,比如:bootstrap-validator,而后端主要使用的是Hibernate Validator检验框架,通过数据校验,我们能避免用户借助一些HTTP请求工具直接向后端发送一些不合法的数据请求,本文将入如何在Spring/Spring Boot下实现后端的数据校验。 Hibernate Validator 常见注解 注解 用途 Valid 递归的对关联的对象进行校验 AssertFalse 用于boolean字段,该字段的值只能为false AssertTrue 用于boolean字段,该字段只能为true DecimalMax(value) 被注释的元素必须是一个数字,只能大于或等于该值 DecimalMin(value) 被注释的元素必须是一个数字,只能小于或等于该值 Digits(integer,fraction) 检查是否是一种数字的(整数,小数)的位数 Future 检查该字段的日期是否是属于将来的日期 FutureOrPresent 判断日期是否是将来或现在日期 Past 检查该字段的日期是在过去
  • 在 Spring/Spring Boot 中实现优雅地参数校验
    最近在写项目的时候,在每一个controller都充满了大量的if来校验参数,而且每一个controller还不同,不能把校验的方法封装起来.特别麻烦. 最普通的做法就像下面这样。我们通过 if/else 语句对请求的每一个参数一一校验。 if ( StringUtils.isBlank(dto.getFwsz().get(i).getFwmc()) || dto.getFwsz().get(i).getCsl() == null || dto.getFwsz().get(i).getLjzcsl() == null || dto.getFwsz().get(i).getYlzcsl() == null) { throw new APIException("缺少必填项"); } 这样的代码明显违背了 单一职责原则。大量的非业务代码混杂在业务代码中,非常难以维护,还会导致业务层代码冗杂! 下面会通过实例程序演示如何在 SpringBoot 程序中优雅地的进行参数验证(普通的 Java 程序同样适用)。 @PostMapping public ResponseEntity<PersonRequest> save(@RequestBody @Valid PersonRequest personRequest) { return ResponseEntity.ok().body
  • 高级解析字符串中的数字范围(Advanced parsing of numeric ranges from string)
    问题
  • Springboot中参数校验优雅实践
    在提供对外的API接口的时候,我们经常需要对参数进行校验。通常的做法是在程序中通过if 进行判断,例如: package com.validator.demo.api.controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.validator.demo.api.base.DateResult; import com.validator.demo.api.base.ResultCode; import com.validator.demo.api.model.dto.PeopleDTO; import com.validator.demo.api.model.vo.PeopleVO; @RestController @RequestMapping("/test/api") public class
  • 在SpringBoot使用BeanValidation校验参数
    Bean Validation Bean Validation是Java定义的一套基于注解的数据校验规范。Hibernate Validation是Bean Validation的一个实现。 Bean Validation官网:https://beanvalidation.org/ Hibernate Validation官网:http://hibernate.org/validator/ 注解介绍 validator内置注解: @Null 被注释的元素必须为 null @NotNull 被注释的元素必须不为 null @AssertTrue 被注释的元素必须为 true @AssertFalse 被注释的元素必须为 false @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 @Size(max, min) 被注释的元素的大小必须在指定的范围内 @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内 @Past
  • SpringBoot 使用注解进行接口参数校验
    文章目录 1. 基础简介2. 框架简介2.1. validation-api2.2. jakarta.validation-api2.3. hibernate-validator2.4. spring-boot-starter-validation 3. 注解说明3.1. 标识注解3.2. 约束注解3.3. 提示信息 4. 使用说明4.1. 一般性校验4.2. 自定义校验4.3. 分组校验4.4. 异常处理 本文需要结合 SpringBoot 封装接口返回数据的统一结构部分代码。 本文需要结合 SpringBoot 添加全局异常统一处理代码部分代码。 1. 基础简介 JCP(Java Community Process)为Java技术制定标准技术规范的机构,任何人都可以注册 JCP 网站,并且可以参与JSR(Java Specification Requests:Java规范提案)的评审,也可以提交自己的JSR。 Bean Validation是Java定义的一套基于注解的数据校验规范,出自JSR303,JSR349,JSR380规范提案。目前最新规范是Bean Validation 2.0。 JSRs: Java Specification Requests(bean validation) 2. 框架简介 JSR规范提案只是提供了技术标准,并没有提供具体的实现
  • python怎么编图形界面_python 实现GUI(图形用户界面)编程详解
    Python支持多种图形界面的第三方库,包括: wxWidgets Qt GTK Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。Tk8.0 的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。 wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。 Jython:Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。 Tkinter 我们来梳理一下概念: 我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口; Tk是一个图形库,支持多个操作系统,使用Tcl语言开发; Tk会调用操作系统提供的本地GUI接口,完成最终的GUI。 所以
  • Tkinter Spinbox range validation
    I'm trying to make use of this excellent answer by Bryan Oakley, but to no avail (https://stackoverflow.com/a/4140988/5060127)... I would like to use the same method to verify Spinbox values. I have defined from_ and to values for spinboxes, but user can still type most anything in them... it should be validated that only values within the from_-to range are possible to be inputted by the user, and only integers at that. Here's the code that shows how far I've got... try: from Tkinter import * except ImportError: from tkinter import * class GUI: def __init__(self): # root window of the whole
  • java面试必问:String有长度限制吗?是多少?
    话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,而且有的家人们在面试的时候也遇到了。本人就遇到过面试的时候问这个的,而且在之前开发的中也真实地遇到过这个String长度限制的场景(将某固定文件转码成Base64的形式用字符串存储,在运行时需要的时候在转回来,当时文件比较大),那这个规范限制到底是怎么样的,咱们话不多说先䁖䁖去。关于Java项目还整理了100+Java项目视频+源码+笔记,地址:100+Java项目视频+源码+笔记String首先要知道String的长度限制我们就需要知道String是怎么存储字符串的,String其实是使用的一个char类型的数组来存储字符串中的字符的。 那么String既然是数组存储那数组会有长度的限制吗?是的有限制,但是是在有先提条件下的,我们看看String中返回length的方法。 由此我们看到返回值类型是int类型,Java中定义数组是可以给数组指定长度的,当然不指定的话默认会根据数组元素来指定: int[] arr1 = new int[10]; // 定义一个长度为10的数组 int[] arr2 = {1,2,3,4,5}; // 那么此时数组的长度为5整数在java中是有限制的,我们通过源码来看看int类型对应的包装类Integer可以看到
  • 提出这些部件以及一个简短的
    Python 基础教程 Python 基础教程 Python 简介 Python 环境搭建 Python 中文编码 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循环语句 Python While 循环语句 Python for 循环语句 Python 循环嵌套 Python break 语句 Python continue 语句 Python pass 语句 Python Number(数字) Python 字符串 Python 列表(List) Python 元组 Python 字典(Dictionary) Python 日期和时间 Python 函数 Python 模块 Python 文件I/O Python File 方法 Python 异常处理 Python OS 文件/目录方法 Python 内置函数 Python 高级教程 Python 面向对象 Python 正则表达式 Python CGI 编程 Python MySQL Python 网络编程 Python SMTP Python 多线程 Python XML 解析 Python GUI 编程(Tkinter) Python2.x 与 3​​.x 版本区别 Python IDE Python JSON Python 100例 Python 测验