JComboBox 上的 JScrollPane

2023-12-07

我制作了一个组合框,但某些元素比我的框的宽度更宽。所以我尝试添加一个水平滚动窗格,而我唯一能看到的是一个内部带有组合框的滚动窗格! 当然我做错了什么。这是我没有 jscrolpane 的代码。

    issuerdocumentJComboBox=new JComboBox<>(issuermodel);//the compo box
    issuerdocumentJComboBox.setBounds(430, 120, 100, 30);
    searchDocumentesJPanel.add(issuerdocumentJComboBox);   

如何向组合框添加水平滚动窗格? 谢谢你!


有可能的!!这是我编写的一个小程序来展示我的解决方案:

import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.plaf.basic.BasicComboBoxEditor;

public class TestComboScroll {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Scroll inside Combo");
        JComboBox combobox = new JComboBox();

        combobox.addItem("");
        combobox.addItem("Item1");
        combobox.addItem("Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2");
        combobox.addItem("Item3");

        combobox.setEditor(new MyEditor());
        combobox.setEditable(true);

        combobox.setPreferredSize(new Dimension(200, 50));
        frame.add(combobox);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    static class MyEditor extends BasicComboBoxEditor{
        JScrollPane scroller = new JScrollPane();
        //NOTE: editor is a JTextField defined in BasicComboBoxEditor

        public MyEditor(){
            super();
            scroller.setViewportView(editor); 
            scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        }

        /** Return a JScrollPane containing the JTextField instead of the JTextField **/
        @Override
        public Component getEditorComponent() {
            return scroller;
        }

        /** Override to create your own JTextField. **/
        @Override
        protected JTextField createEditorComponent() {
            JTextField editor = new JTextField();
            editor.setBorder(null);
            /*editor.setEditable(false); //If you want it not to be editable */
            return editor;
        }
    }
}

该方法是创建一个在滚动窗格中显示 JTextField 编辑器的自定义 ComboBoxEditor(更容易扩展 BasicComboBoxEditor)。 这getEditorComponent()然后重写函数以返回滚动窗格而不是文本字段。

当您调用时,这两个重写函数会在内部调用combobox.setEditor(new MyEditor())因此,如果您看不到它正在使用,请不要担心。

Here's a screenshot of the program showing an element wider than combobox: screenshot

祝你好运!! :-)

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

JComboBox 上的 JScrollPane 的相关文章

随机推荐

  • 多个项目的区域 - 在子项目中找不到视图

    我一直在关注 MSDN 上的这个指南 使用多个项目创建 ASP NET MVC Areas 应用程序 由于 ASP NET MVC 2 0 只是预览版 人们可能会认为存在一些错误 我的问题是 它根本不起作用 至少不是应该的方式 设置完所有内
  • 在elasticsearch 5中聚合_field_names

    我正在尝试聚合 ES 5 中的字段名称 如中所述不同键上的 Elasticsearch 聚合但那里描述的解决方案不再有效 我的目标是获取所有文档的密钥 映射是默认映射 Data PUT products product 1 param fi
  • 有没有办法暂停气流 DagRun?

    有没有办法暂停 Airflow 中的特定 DagRun 我希望能够对单个 DAG 进行多个同时执行的运行 并且我希望能够在某些点单独暂停这些运行 取消暂停 暂停功能似乎仅在 DAG 级别起作用 并暂停 取消所有 DagRun 针对该 DAG
  • 将 Keras 增强数据保存为 numpy 数组

    使用喀拉斯图像数据生成器 我们可以将增强图像保存为 png 或 jpg for X batch y batch in datagen flow train data train labels batch size batch size sa
  • ES6类构造函数不能像普通函数一样调用的原因是什么?

    ES6 类构造函数不能作为普通函数调用 根据 ES6 aTypeError完成此操作后应提出 我曾经认为类只是原型中的构造函数 函数的语法糖 但这使得它稍微不那么重要 我想知道 这背后的理由是什么 除非我错过了什么 否则它会阻止使用自定义调
  • 使用 Python 将纬度、经度、值 CSV 转换为栅格地图

    如果我有一个包含纬度 经度和值字段的 CSV 数据集 那么使用 python 生成栅格地图的最佳方法是什么 栅格 Z 字段可以是该表中的任何列 L5 L6 L7 L8 L9 L10 L11 L12 L13 L14 LAT LON 3 571
  • 在c#中解析阿拉伯日期

    在我正在编写的应用程序中 我想解析 C 中阿拉伯语的特定日期 例如 日期可能如下所示 但我想要这个输出 30 12 1989 我的问题是如何在 C 中执行此操作以从此字符串中获取 DateTime 对象 谁能告诉我该怎么做 东方阿拉伯数字不
  • 带有字母 A-Z 或其他自定义范围的 jQuery UI Spinner

    有没有办法自定义 jQuery UI 微调器 以便可以使用 A Z 字母 或任何自定义范围 是的 这是可能的 这是一个使用 A Z 的简单示例 改编自提供的时间示例 widget ui alphaspinner ui spinner opt
  • Javascript 中的 RTL 确认和警报

    你能做一个confirm or alert显示其消息 RTL 并右对齐 尝试在消息的开头添加以下内容 u200f u200f 例如 alert u200f u200f message or confirm u200f u200f messa
  • 如何向 PropertySheet 添加夹具?

    我有一个类源自CPropertySheet 我想在对话框的右下角插入一个 夹具 我的对话框已经可以调整大小 我只是无法插入夹具 不知道有没有什么特殊的API可以做到这一点 一种选择是手动绘制它 然后覆盖ON WM NCHITTEST并返回H
  • 如何跟踪递归函数 C++

    include
  • 如何将 MySQL 触发器异常/失败信息存储到表或变量中

    我被困在某个地方 需要你的帮助 Scenario 我有两个数据库 即test db1 and test db2并有users桌子上有他们两个 两个数据库最初都是空的 0 行 Here s users表架构 DROP TABLE IF EXI
  • 从 pandas 数据框创建列表字典

    我正在尝试创建基于 pandas 数据框的列表字典 我需要一个列表字典来传递给我的 Plotly 仪表板 In df head Model Make Ford F 150 Ford Escape Ford Mustang Jeep Gran
  • Facebook iOs sdk iphone:从多个视图控制器调用

    我按照 facebook 开发文档的官方指南从我的 iPhone 应用程序实现 SSO 但所有持有 Facebook 类的成员都在同一个视图控制器中 现在考虑我想登录一个导航控制器的第一个视图控制器 然后从同一导航控制器的第三个视图控制器调
  • 运行应用程序时的 IntelliJ MyClass.class(没有此类文件或目录)

    我正在尝试在 IntelliJ 上运行我的 Android 应用程序 我从现有源创建了一个项目 并且已正确附加 SDK 一切运行正常 但当我尝试运行时 它会记录消息 Error MyClass class No such file or d
  • 找到 C 列的最后一行(然后 A 列和 B 列有不同的行大小)?

    如何找到 C 列最后使用的单元格 示例 Sheet1 Col A 和 Col B 有 1200 行 而 Col C 只有 1 行 ColA ColB ColC 1 1 1 2 2 empty 1200 1200 empty 这是我不成功的测
  • ASP.net 有效渲染元标记

    HTML 隐藏代码 MetaDescription Attributes content ThisBlog MetaDescription 这呈现为 As per 这个答案它不需要有 ID 属性 并以 gt 我怎样才能让它以这种方式渲染 我
  • 数据范围订阅奇怪的行为

    我在玩 swift 的Data在下面的小代码中 var d Data count 10 d 5 3 let d2 d 5 lt 8 print d2 0 令我惊讶的是 这段代码抛出异常print 而下面的代码则不然 var d Data c
  • 无 UI 的 WiX 命令行选项“/quiet”会终止正在运行的进程

    我使用 Wix 为我的应用程序创建了一个没有 UI 的安装包 此处称为 XYZ 如果我在 XYZ exe 运行时双击 MSI 它会通知我某个进程正在锁定文件 我可以选择终止锁定进程 也可以中止安装 这很好 作为用户我可以决定做什么 但是当我
  • JComboBox 上的 JScrollPane

    我制作了一个组合框 但某些元素比我的框的宽度更宽 所以我尝试添加一个水平滚动窗格 而我唯一能看到的是一个内部带有组合框的滚动窗格 当然我做错了什么 这是我没有 jscrolpane 的代码 issuerdocumentJComboBox n