JTable 中的 JSlider

2024-01-16

用于放置一个JSlider into a JTable我写的是AbstractCellEditor它实现了一个TableCellRendererand a TableCellEditor。它使用 0 到 100 之间的值进行初始化。

我有一个奇怪的行为,当我第一次单击滑块时,它会跳到最大值。

第二个奇怪的行为:我添加了一个ChangeListener。仅当我第一次单击滑块时才会调用此侦听器。第二次单击(也会更改值)不会导致此事件。为什么?

public class SliderTableColumn extends AbstractCellEditor implements TableCellRenderer,
                                                                     TableCellEditor

{
    private final JSlider slRenderer;
    private final JSlider slEditor;

    private final int INITAL_VALUE;
    private final int MIN_VLAUE;
    private final int MAX_VALUE;

    public SliderTableColumn(int min, int max, int initial, ChangeListener listener)
    {
        INITAL_VALUE = initial;
        MIN_VLAUE    = min;
        MAX_VALUE    = max;

        slRenderer = new JSlider(MIN_VLAUE, MAX_VALUE);
        slEditor   = new JSlider(MIN_VLAUE, MAX_VALUE);

        slEditor.addChangeListener(listener);

        slRenderer.setUI(new CustomSliderUI(slRenderer, INITAL_VALUE));
        slEditor.setUI(new CustomSliderUI(slEditor,     INITAL_VALUE));

        slRenderer.setValue(INITAL_VALUE);
        slEditor.setValue(INITAL_VALUE);
    }

    @Override
    public Object getCellEditorValue()
    {
        return slEditor.getValue();
    }

    @Override
    public Component getTableCellRendererComponent(JTable table,
                                                Object value,
                                                boolean isSelected,
                                                boolean hasFocus,
                                                int row,
                                                int column)
    {
        if(value != null)
        {
            slRenderer.setValue(((Integer) value).intValue());
        }
        return slRenderer;
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
                                                Object value,
                                                boolean isSelected,
                                                int row,
                                                int column)
    {
        if(value != null)
        {
            slEditor.setValue(((Integer) value).intValue());
        }
        return slEditor;
    }
}

缺席你的sscce http://sscce.org/,我在猜测;但我可以建议仔细检查两件事:

  1. In getTableCellEditorComponent(), 实际参数value来自您的表模型。你的setValue()调用转发value滑块的范围模型。超出范围value被固定到extreme http://docs.oracle.com/javase/7/docs/api/javax/swing/BoundedRangeModel.html#setValue%28int%29.

  2. Your ChangeListener需要fireEditingStopped(),如图所示ItemListener这个相关的example http://sites.google.com/site/drjohnbmatthews/table.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTable 中的 JSlider 的相关文章

  • 如何重新加载 JPanel?

    我是一个java新手 我需要知道如何reload a JPanel 我延长了JPanel类并创建了一个将在cardlayout在一个小程序中 我想要这个面板reload refresh用户点击后button在此面板中 我尝试包括revali
  • 将 JLabel 置于 JPanel 的中心

    我正在使用 NetBeans GUI 构建器来处理我的布局 我对 LayoutManager 很糟糕 并尝试放置一个简单的 JLabel 以便它始终在其父 JPanel 内居中 水平 理想情况下 即使调整了 JPanel 的大小 这也将保持
  • 如何让我的星星旋转?我能够制作星星,但不知道如何让它旋转

    这是我必须绘制星星的代码 g2d setStroke new BasicStroke 5 0f g2d setPaint Color BLACK g2d drawLine 40 90 40 40 g2d drawLine 80 90 40
  • setSelected() 与 JRadioButton r[]=new JRadioButton[3] 不起作用[重复]

    这个问题在这里已经有答案了 在这里我做了一个虚拟程序 import javax swing import java awt import java awt event class MyClass1 implements ActionList
  • 在 Java 中的 JFrame/JPanel/JComponent 中添加 Web 浏览器

    我正在开发一个 Java 应用程序 需要在应用程序中使用 Web 浏览器 我见过一些应用程序这样做 例如在同一应用程序中单击左侧面板中的提要并打开右侧面板中的链接时的 RSS 阅读器 我想实现类似的功能 在java中可以做到这一点吗 Jav
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即
  • 指定不带组件的GridBagLayout的网格参数

    我试图帮助另一个用户 但遇到了一个问题 我想用 GridBagLayout 来做到这一点 c1 c2 c3 10 80 10 v v r1 B1
  • JPanel 底部出现奇怪的白色边框

    我的屏幕底部有一个奇怪的白色边框 它位于左下角 即TimeView java 这是我的 ContentPane java package views import java awt BorderLayout import javax swi
  • 如何将jscrollpane添加到jframe?

    我有以下源代码 有人可以给我建议如何将 jscrollpane 添加到 jframe 上吗 我尝试了几次将其添加到 jframe 但没有任何进展 它甚至没有显示 public class Form3 JFrame jframe new JF
  • JTable 不断调用自定义单元格渲染器方法...

    编译源可以在以下位置找到 http www splashcd com jtable tar http www splashcd com jtable tar 我是这门语言的新手 所以我不确定这是否可以接受 我创建了一个 JTable 来为收
  • 如何在 Java Swing 中拥有可折叠/可展开的 JPanel

    我想要一个 JPanel 当用户单击其边框上的文本 图标时可以折叠或展开 由于我的应用程序空间紧张 我需要这种类型的面板 我读到了有关 CollapsiblePanel 类的信息 但不知道如何使用它 我认为需要下载 SwingX 但没有在任
  • 检测 JTextField“取消选择”事件

    有没有某种方法可以检测 JTextField 是否被取消选择 即该字段已被选择 但现在您选择了其他内容 我想要这样做的原因是因为我想在用户尝试提交数据之前检查用户表单中是否有任何非法字符 如果有一些更简单的方法来做到这一点 而不是我试图解决
  • 从多个地方绘制 JPanel

    我目前正在为学校开发一款 Java 2D 游戏 我们必须使用抽象工厂设计模式 对于 2D 实现 我使用工厂如下 public class Java2DFact extends AbstractFactory public Display d
  • 自定义 JScrollBar-Thumb 被绘制,但不移动

    我决定更深入地研究秋千和自定义绘画组件的材质 过去几天 我在 StackOverFlow 和其他论坛上阅读了大量文章 API 文档和问题 但在理解这个概念时我仍然遇到了一些基本问题 我想要做什么 基本上 我想为我自己的 Swing GUI
  • JFrame 图标在 Ubuntu 12.04 中不显示

    我使用一些图像图标开发了一个 Swing 应用程序 应用程序 jar 文件在 Windows 中按预期工作 但相同的 jar 文件在 Ubuntu 12 04 操作系统上不显示框架的图像图标 我的示例代码 ImageIcon ImageIc
  • Jlist 自定义渲染器

    我正在尝试添加一个我猜你会称其为列表中每个项目的子列表 我构建了一个自定义渲染器 它提供以下输出 正如你所看到的 有些东西不对劲 我没能找到问题的答案 我猜我需要更改面板布局中的某些内容才能获得正确的结果 但不知道是什么 https i s
  • JTable过滤后正确的行号

    这是一个 try 块 用于过滤 table job 以查找与关键字匹配的行 但是 当表模型发生变化时 我很难获得正确的行索引 它始终选择第一行 即使过滤结果显示的行不是第一行 我知道你可以做一些事情fireTableDataChanged
  • java 拖放

    我尝试熟悉java中的拖放 但我发现的所有教程都是 让我生气 我想要的只是从 JList 包含在名为 UserPanel 的自制 JPanel 中 拖动 PublicUserLabel 并将其放入从 JTabbedPanel 继承的自制类中
  • 如何使图像大小适合 JFrame 大小?

    我有一个JPanel into a JFrame 我在上面加载了一张图片JPanel但它只显示了图片的一部分 这是我执行此操作的代码部分 JPanel panelImg new JPanel public void paintCompone
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co

随机推荐

  • Google Play 显示 - 您的设备与此版本的 Samsung Galaxy tab 2 和 Google Nexus 7 不兼容

    当我将应用程序发布到 Google Play 商店并尝试在 Google Nexus 7 上下载它时 我收到消息 您的设备与此版本不兼容 我的清单文件声明如下
  • 如何使用TinyXml解析特定元素

    我想解析一组元素TinyXml输出 本质上 我需要挑选出任何端口元素 portid 端口属性的状态为 open 如下所示为端口 23 最好的方法是什么 以下是 TinyXml 输出的 简化 列表
  • 检查上传的文件是否为 csv 格式

    我正在 php 中上传文件 并且只想上传 csv 文件 我相信我的语法适合内容类型 当它是 csv 文件时 它总是转到 else 语句 我在这里做错了什么 if FILES file type text csv else 如果我更改内容类型
  • 比较 T-SQL 中的日期,忽略时间部分

    我正在使用 MS SQL 2005 我想检查两个日期是否相等 但忽略时间部分 我知道我可以利用DATEDIFF http msdn microsoft com en us library ms189794 aspx 但担心它可能会很慢 这个
  • 如何创建文件夹/目录

    如何使用 c 创建目录 文件夹 我尝试使用 mkdir 但没有成功 我想编写一个程序 cin 是一个变量 然后使用这个变量来创建子目录和其中的文件 我当前的代码 它表示 mkdir 中的 运算符表示错误无操作数 char newFolder
  • 如何在 Paraview 中可视化存储在简单表格中的 XYZ+Field 体积数据?

    很长一段时间以来 我一直在 Goldensoftware Surfer Voxler 工作 在这个程序中 很容易可视化表数据 该方案如下所示 数据输入 在此步骤中我可以指定 x y z 和一个组件 一些物理场数据 gt 网格化 gt 轮廓
  • 使用 awk 调用可执行程序

    我有一个 C 程序 我想在 shell 脚本中使用 awk 来调用它 我怎样才能做这样的事情 来自 AWK 手册页 system cmd executes cmd and returns its exit status GNU AWKman
  • MySQL ORDER BY 另一个表中用户的总行数

    假设 我想显示一个用户列表 按他们发送的消息数量排序 我有 2 张桌子 Users and Messages 我有 10 个用户 用户 A 发送了 20 条消息 消息表中有 20 行 SELECT FROM messages WHERE u
  • 在 v-show 显示输入后将焦点设置在输入上

    我有一个简单的表单 使用 v show 在加载页面时隐藏该表单 我想在显示后集中输入 我有一个按钮来调用一个显示表单的方法 并使用以下代码将焦点设置为输入 this newQuestion true Form whit v show new
  • 使用 HTML5 在 iPhone 上播放 Shoutcast 流

    我知道这个问题过去已经被问过 但我最终没有找到答案 所以我得到了一个shoutcast流 编码音频 mpeg 我想为我的iPhone创建一个网络应用程序来收听我的流移动设备 我尝试了几种方法http mydomain com 8000 ht
  • 使用 Greasemonkey(或类似的用户脚本引擎)更快地重定向?

    我正在使用 Greasemonkey 将某些 URL 重定向到另一个 URL 但我想在要重定向的 URL 加载之前进行重定向 目前我正在使用这个简单的脚本 UserScript name Redirect Google descriptio
  • 在 Yii 中更新和删除相关模型(关系表)

    UPDATED 我有两个相关的模型 即候选人和资格 他们之间是一对一的关系 我正在使用 CActiveForm 并希望对关系数据执行 CRUD 操作 我能够插入数据 但更新和删除时遇到问题 该函数正在显示 id 但这是页面上唯一显示的内容
  • 切换后台任务时 SIGPIPE 崩溃

    将我的应用程序发送到后台 加载新应用程序 将设备切换到睡眠模式 唤醒设备 关闭新应用程序 然后从后台任务打开我的应用程序时 我遇到了奇怪的崩溃 将出现黑屏 我无法使用主页按钮退出此黑屏 并且在调试器中我会显示以下消息 程序接收信号 SIGP
  • 在 html 中使用包含空格的变量设置“value”属性

    我对 HTML JS 很陌生 所以如果这是一个基本问题 我深表歉意 我尝试在网上查找此问题 但无法找到解决方案 我正在使用 JS 代码来创建 HTML 我正在尝试使用包含空格的 var 设置 值 属性 带空格的字符串 当检查 chrome
  • 在 NPM 上发布要包含在 README.md 中的图像

    In 这个项目 https github com fireflysemantics validator the README md显示logo pnglogo png徽标位于顶部README md file 我们希望在 NPM 上显示相同的
  • QLPreviewController - 设置previewItemTitle

    我不知道如何设置 QLPreviewController 类的 PreviewItemTitle 属性 这似乎有点奇怪 因为此类的 iPhone 开发人员文档说该属性是 property readonly 这意味着我无法设置它 有任何想法吗
  • 是否可以在 Android 应用程序中使用 Neo4j 数据库?

    如果我在 Android 应用程序中使用 Neo4j 数据库 会出现任何错误吗 如果是这样 有人可以建议我任何其他图形数据库用作 Android 应用程序的后端吗 是的 尽管Neo4J提供REST API来使用Cypher语言查询数据库 h
  • 使用 JavascriptExecutor 发送密钥并单击 Web 元素

    我正在尝试在新选项卡中打开一个链接 然后在 Firefox 浏览器中使用 Java 中的 selenium 切换到该选项卡 据我了解 为了做到这一点 我需要使用发送键组合 为了在同一窗口中打开链接 我一直在使用这样的东西 WebElemen
  • 为什么我无法将node_modules文件上传到GitHub存储库?

    我有一个使用 Angular 6 编写的项目 我想将该项目上传到 GitHub 但是当我使用 GitHub Desktop 上传该项目时 除了 node modules 文件之外的所有文件都会上传 当我从 GitHub 下载项目并尝试运行时
  • JTable 中的 JSlider

    用于放置一个JSlider into a JTable我写的是AbstractCellEditor它实现了一个TableCellRendererand a TableCellEditor 它使用 0 到 100 之间的值进行初始化 我有一个