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我的经验是相反的,但在这种情况下,你是对的,我可以将侦听器附加到模型,但我仍然必须铸造源代码,而且,我也不喜欢铸造“我本来可以将侦听器附加到模型”嗯..我刚刚学到了一些新的东西。我没有意识到我可以将侦听器直接添加到模型中(虽然这似乎合乎逻辑,…现在你提到了!)。目前,我在超出范围之前将侦听器添加到微调器组件。:Pint value=(int)spinner.getValue();
为了避免强制转换,我通常会调用model.getNumber().intValue()
。@AndrewThompson这是一个公平的评论,我假设OP可能没有对模型的引用,在本例中,我可以“几乎”证明盲转换:P“我假设OP可能没有对模型的引用。”。。“我经常使用微调器,但从不引用组件,只引用模型。我对铸造有病态的厌恶。;@AndrewThompson我的经验是相反的,但在这种情况下,你是对的,我本可以将侦听器附加到模型上,但我仍然必须铸造源代码,而且,我也不喜欢铸造“我本来可以将侦听器附加到模型”嗯..我刚刚学到了一些新的东西。我没有意识到我可以将侦听器直接添加到模型中(虽然这似乎合乎逻辑,…现在你提到了!)。目前,我在超出范围之前将侦听器添加到微调器组件中。:P