Java 如何使用JSpinner的ChangeListener? private String[]fontsizelist={“10”、“15”、“20”}; 私有SpinnerListModel spinmodel=新SpinnerListModel(fontsizelist); 私有JSpinner fontsizeitem=新JSpinner(spinmodel); //建造师 一些代码 fontsizeitem.addChangeListener(新的ChangeListener(){ 公共无效状态已更改(更改事件e){ 对于(int i=0;i

Java 如何使用JSpinner的ChangeListener? private String[]fontsizelist={“10”、“15”、“20”}; 私有SpinnerListModel spinmodel=新SpinnerListModel(fontsizelist); 私有JSpinner fontsizeitem=新JSpinner(spinmodel); //建造师 一些代码 fontsizeitem.addChangeListener(新的ChangeListener(){ 公共无效状态已更改(更改事件e){ 对于(int i=0;i,java,swing,jspinner,Java,Swing,Jspinner,你应该从 SpinnerNumberModel设置权限(最小值为10,最大值为20,步长为5)将提供与fontsizelist相同的结果 基本思想是,当值更改时,JSpinner将通知您的ChangeListener,从中,您需要获取JSpinner的引用并获取其当前值,例如 private String[]fontsizelist = {"10","15","20"}; private SpinnerListModel spinmodel = new SpinnerListModel(font

你应该从

SpinnerNumberModel
设置权限(最小值为
10
,最大值为
20
,步长为
5
)将提供与
fontsizelist相同的结果

基本思想是,当值更改时,
JSpinner
将通知您的
ChangeListener
,从中,您需要获取
JSpinner
的引用并获取其当前值,例如

private String[]fontsizelist = {"10","15","20"};
private SpinnerListModel spinmodel = new SpinnerListModel(fontsizelist);
private JSpinner fontsizeitem= new JSpinner(spinmodel);
//Constructor

some codes


         fontsizeitem.addChangeListener(new ChangeListener(){

        public void stateChanged(ChangeEvent e){
            for(int i=0;i<fontsizelist.length;i++){
                fontsizeitem [i]=new JSpinner(fontsizelist[i]);<-shows error 
            }
        }
    });
你应该从

SpinnerNumberModel
设置权限(最小值为
10
,最大值为
20
,步长为
5
)将提供与
fontsizelist相同的结果

基本思想是,当值更改时,
JSpinner
将通知您的
ChangeListener
,从中,您需要获取
JSpinner
的引用并获取其当前值,例如

private String[]fontsizelist = {"10","15","20"};
private SpinnerListModel spinmodel = new SpinnerListModel(fontsizelist);
private JSpinner fontsizeitem= new JSpinner(spinmodel);
//Constructor

some codes


         fontsizeitem.addChangeListener(new ChangeListener(){

        public void stateChanged(ChangeEvent e){
            for(int i=0;i<fontsizelist.length;i++){
                fontsizeitem [i]=new JSpinner(fontsizelist[i]);<-shows error 
            }
        }
    });

使用
JSpinner#getValue
,从
JSpinner
获取当前值,该值将是
字符串,因此您需要将其转换为
整数
喷丝头编号模型=新喷丝头编号模型(10,10,20,5);
还将为您的
fontsizelist
fontsizeitem提供类似的结果[i] =新的JSpinner(fontsizelist[i]);
您在该代码行中试图实现的目标是什么……这对我来说毫无意义。1)微调器已经实例化,为什么要再次创建它?2)第一部分确实暗示了
fontsizeitem
是一个数组。它没有被声明为一个数组。3)它似乎试图创建一个微调器数组,每个微调器都有一个原始微调器的项目。一个微调器只有一个项目是没有意义的,而一个微调器数组就更没有意义了。@AndrewThompson我认为它也可以工作作为JMenuItem。我只想从数组中获取项并将其放入JSpinner@MadProgrammer谢谢您的评论。我将尝试您和答案的建议使用
JSpinner#getValue
JSpinner
获取当前值,该值将是
字符串
,因此您需要将其转换为
整数innerNumberModel=new SpinnerNumberModel(10,10,20,5);
也会给出与
fontsizelist类似的结果
您试图在该代码行中实现的是什么……这对我来说毫无意义。1)微调器已经被实例化,为什么还要再次创建它?2)第一部分确实暗示
fontsizeitem
是一个数组。它没有被声明为一个数组。3)它似乎试图创建一个微调器数组,每个微调器都有一个原来的微调器。只有一个项目的微调器毫无意义,而一个项目数组的微调器就更没有意义了。@AndrewThompson我认为它的工作原理与JMenuItem相同。我只想从数组中获取项目并将其放入JSpinner@MadProgrammer谢谢你的评论。我将尝试你和答案的建议
int value=(int)spinner.getValue();
为了避免强制转换,我通常会调用
model.getNumber().intValue()
。@AndrewThompson这是一个公平的评论,我假设OP可能没有对模型的引用,在本例中,我可以“几乎”证明盲转换:P“我假设OP可能没有对模型的引用…”我经常使用微调器,但从不引用组件,只引用模型。我对铸造有病态的厌恶。@AndrewThompson我的经验是相反的,但在这种情况下,你是对的,我可以将侦听器附加到模型,但我仍然必须铸造源代码,而且,我也不喜欢铸造“我本来可以将侦听器附加到模型”嗯..我刚刚学到了一些新的东西。我没有意识到我可以将侦听器直接添加到模型中(虽然这似乎合乎逻辑,…现在你提到了!)。目前,我在超出范围之前将侦听器添加到微调器组件。:P
int value=(int)spinner.getValue();
为了避免强制转换,我通常会调用
model.getNumber().intValue()
。@AndrewThompson这是一个公平的评论,我假设OP可能没有对模型的引用,在本例中,我可以“几乎”证明盲转换:P“我假设OP可能没有对模型的引用。”。。“我经常使用微调器,但从不引用组件,只引用模型。我对铸造有病态的厌恶。;@AndrewThompson我的经验是相反的,但在这种情况下,你是对的,我本可以将侦听器附加到模型上,但我仍然必须铸造源代码,而且,我也不喜欢铸造“我本来可以将侦听器附加到模型”嗯..我刚刚学到了一些新的东西。我没有意识到我可以将侦听器直接添加到模型中(虽然这似乎合乎逻辑,…现在你提到了!)。目前,我在超出范围之前将侦听器添加到微调器组件中。:P