首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么JComboBox会忽略PrototypeDisplayValue

为什么JComboBox会忽略PrototypeDisplayValue
EN

Stack Overflow用户
提问于 2011-12-30 12:26:01
回答 4查看 3K关注 0票数 5

关于这两个帖子@iMohammad,Increasing/Decreasing Font Size inside textArea using JButtonChanging Font Style when Clicking on a JButton Java ...,我遇到了一个非常有趣的问题,它来自JComboBox,在屏幕上传递了setPrototypeDisplayValue作为JComboBox's size的参数

请告诉我如何动态调整依赖于FontJComboBox的大小,就像我在我的sscce中尝试的另一个JComponents一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ComboBoxFontChange extends JFrame {

    private static final long serialVersionUID = 1L;
    private JComboBox cbox = new JComboBox();
    private JTextField tfield = new JTextField("Change");
    private JLabel label = new JLabel("Cash");
    private JButton button = new JButton("++ Font");
    private JTextField text;
    private JPanel panel = new JPanel();

    public ComboBoxFontChange() {
        super("Combo Box Font change");
        text = (JTextField) cbox.getEditor().getEditorComponent();
        cbox.addItem("Change");
        cbox.addItem("Cash");
        cbox.addItem("Font");
        tfield.setColumns(5);
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Font font = cbox.getFont();
                font = font.deriveFont((float) (font.getSize2D() * 1.10));
                cbox.setFont(font);
                // EDIT
                cbox.setPrototypeDisplayValue(cbox.getSelectedItem().toString());
                tfield.setFont(font);
                button.setFont(font);
                label.setFont(font);
                //panel.revalidate();
                //panel.repaint();
                pack();
            }
        });
        //panel.setLayout(new GridLayout(2, 2, 10, 10));
        panel.add(cbox);
        panel.add(label);
        panel.add(tfield);
        panel.add(button);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        add(panel);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                ComboBoxFontChange frame = new ComboBoxFontChange();
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-30 12:55:39

我调试了您的SSCCE,传递给setPrototypeDisplayValue的值是空字符串。将行更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cbox.setPrototypeDisplayValue(cbox.getSelectedItem());

让一切都按预期工作。删除对setPrototypDisplayValue的调用也会使程序的行为符合预期。

编辑:

另一个问题是,不会为原型显示值触发任何事件,因为您像以前一样将其设置为前一个值,并且只有在该值实际发生更改时才会触发事件。在cbox.setPrototypeDisplayValue(cbox.getSelectedItem().toString())之前添加cbox.setPrototypeDisplayValue("");可以使一切按预期运行,即使在JDK1.6上也是如此。我同意,鉴于字体已更改,应重新计算首选大小,但至少此更改是一种变通方法。

票数 4
EN

Stack Overflow用户

发布于 2011-12-30 12:59:29

我试过JB Nizet说的。但对我来说,comboBox的大小并没有改变。你呢?

因此,我尝试了以下方法,随着字体大小的增加,组合框的大小也随之增加。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cbox.setFont(font);
cbox.updateUI();

我还删除了这行代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cbox.setPrototypeDisplayValue(text.getText()); 
票数 1
EN

Stack Overflow用户

发布于 2011-12-30 15:25:56

作为参考,在Mac上,一次GridLayout和八次单击给出了以下结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
panel.setLayout(new GridLayout(0, 1, 10, 10));

组合:

弹出窗口:

顺便说一句,cbox.updateUI()恢复了Aqua代表com.apple.laf.AquaComboBoxUI指定的默认值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8679421

复制
相关文章
python会忽略pass语句吗_Python 为什么要有 pass 语句?
关于 Python 中的pass语句,它似乎很简单(只有 4 个字母),即使是没有任何编程经验的初学者也能很快地掌握它的用法。
用户7886150
2021/01/22
1.5K0
MYSQL哪些情况下会忽略索引[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111899.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/11
4550
MYSQL哪些情况下会忽略索引[通俗易懂]
MYSQL哪些情况下会忽略索引
5. “between“ 范围条件,可使用 where xx> 1 and xx<3代替
码农编程进阶笔记
2021/07/20
7200
MYSQL哪些情况下会忽略索引
你可能会忽略的 Git 提交规范
如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你。可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项目就被糟践了。不管是开发还是日后维护,都将是灾难。
ITer.996
2019/08/28
4660
你可能会忽略的 Git 提交规范
作者:Jartto's blog 来源:http://jartto.wang/2018/07/08/git-commit/?hmsr=toutiao.io&utm_medium=toutiao.io&
程序猿DD
2018/07/31
3130
你可能会忽略的 Git 提交规范
一直是 ESLint 的忠实用户,深知规范的重要性。然而,在新项目交接中,我被 Git Commit 规范逼疯了。才意识到自己的疏忽,于是便有了一探究竟的想法。
DevOps时代
2018/08/01
3190
你可能会忽略的 Git 提交规范
9、JcomboBox下拉框事件监听
该文讲述了如何利用JComboBox监听事件,并通过实例代码进行了详细的介绍。当使用ItemListener监听JComboBox的下拉框事件时,在每次更改选中项时,会触发两次ItemStateChanged事件,这是因为每次选中项时,会重新选中上一个选中项,然后取消选择,因此会触发两次事件。可以通过判断事件状态是否为选中状态来区别处理。
YGingko
2017/12/28
2.5K0
为什么AngularJs会火?
Angular.js is a MV* (Model – View – Whatever) Javascript framework which is maintained by Google which excels in the creation of single-page-applications or even for adding some “magic” to our classic web applications.
javascript.shop
2019/09/04
9000
为什么@Conditional会失效?
一、背景描述二、常见条件注解失效场景三、聊一聊条件注解实现原理四、问题定位五、解决方案六、参考
叔牙
2023/08/09
6640
为什么@Conditional会失效?
为什么 demangle 会失败?
本周有位网友在交流群提到“为什么无法在自己的电脑中通过 c++filt 解析符号 _ZN5folly6detail15str_to_integralIxEENS_8ExpectedIT_NS_14ConversionCodeEEEPNS_5RangeIPKcEE ?”
酷酷的哀殿
2020/10/26
1.2K0
为什么 demangle 会失败?
为什么 Google 会很强?
资本总是想榨干员工和机器的每一点剩余价值。如果那一天服务器有了意识,一定会揭竿起义。
LIYI
2022/11/18
6450
MySQL为什么会死锁?
死锁是指两个或者两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而导致的一种阻塞的现象,如果没有外力,他们将一直等待下去。
阿珍
2022/12/06
1.2K0
MySQL为什么会死锁?
为什么Cloud + DevOps会更好?
为了在优化成本的同时最大化云计算的优势,DevOps方法是最好的方法。在此博客文章中,我们解释了原因。
DevOps云学堂
2021/02/01
7020
Spring事务为什么会失效?
如果对AOP的实现不太熟悉的话可以看我之前的文章,或者到我网站www.javashitang.com上查看系列文章
Java识堂
2022/05/19
5130
Spring事务为什么会失效?
Redis为什么会这么快?
Redis 属于键值(key-value)数据库,键值数据库会使用哈希表存储键值和数据,其中 key 作为唯一的标识,而且 key 和 value 可以是任何的内容,不论是简单的对象还是复杂的对象都可以存储。键值数据库的查询性能高,易于扩展。
MickyInvQ
2020/09/27
8870
Redis为什么会这么快?
删除namespace为什么会Terminating?
当我们删除集群中的某个namespace之后,有时候namespace并没有按照我们的期望正常删除,而是一直卡在Terminating状态。本文主要讨论下Terminating状态发生的可能性以及解决办法。
keke.
2021/03/16
10K0
Kafka 为什么会丢消息?
Kafka 是一个分布式的高可用、高性能消息队列,它可以用于大规模的数据处理和流式计算场景。在 Kafka 中丢失消息是一件非常不好的事情,因为这会导致数据的不连续性、计算结果的准确性下降等问题,从而影响到系统的功能和运行效率。下面我将从多个方面探讨 Kafka 为什么会丢失消息,并对其解决办法和优化策略进行简要描述。
用户1289394
2023/08/22
2290
Kafka 为什么会丢消息?
为什么坐车会晕车呢
我是一个坐车经常晕车的人,特别是在车里看手机的时候,感觉很难受。今天正好看到了卓克老师对晕车的解读,我总结了几个关键点,分享给大家。先说结论,每个人都会晕车,就是程度不一样。不要在车上玩手机、看书。这些行为会加重你的不适感。最好的解决方式是上车就睡觉或者集中注意力听音频,光闭眼也无法避免晕车。另外就是豪车更容易晕。
石云升
2022/07/29
5280
为什么坐车会晕车呢
Double为什么会丢失精度
在工作中,谈到有小数点的加减乘除都会想到用BigDecimal来解决,但是有很多人对于double或者float为啥会丢失精度一脸茫然。还有BigDecimal是怎么解决的?话不多说,我们开始。
用户4283147
2022/10/08
2.4K0
Double为什么会丢失精度
Google+ 为什么会死?
2010年,在Google+团队成立后不久,我就从Blogger团队调了过来。我在这个项目上一干就是三年,刚开始在用户信息团队工作,后来又转到发展与参与团队,最后又转去了项目Madonna和项目Zorro,在最后这个项目中我参与了废除“实名政策”的工作。
昱良
2019/07/04
4420

相似问题

为什么JComboBox忽略空值状态?

12

为什么会忽略runpath?

21

为什么appendChild会忽略zIndex?

11

为什么Python会忽略elif?

19

为什么DataContractSerializer会忽略XmlWriterSettings设置?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文