SWT里Slider和Scale的区别
以前以为Slider和Scale之间只是外观的区别,今天发现不是这样的,因为Slider有一个特点:getSelection()能得到的最 大值并不是getMaximum()的值,要减去getThumb()值,后者是中间的滑块所拥有的值,缺省为10,最小为1。运行这个程序观察控制台的 输出。
import org.eclipse.swt.*;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.*;
public class SliderTest {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
//Slider
final Slider slider = new Slider(shell, SWT.HORIZONTAL);
slider.setBounds(10, 10, 200, 32);
slider.setMinimum(0);
slider.setMaximum(100);
slider.setThumb(5);
slider.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Slider Selection:" + slider.getSelection());
}
});
//Scale
final Scale scale = new Scale(shell, SWT.HORIZONTAL);
scale.setBounds(10, 50, 200, 72);
scale.setMinimum(0);
scale.setMaximum(100);
scale.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Scale Selection:" + scale.getSelection());
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.*;
public class SliderTest {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
//Slider
final Slider slider = new Slider(shell, SWT.HORIZONTAL);
slider.setBounds(10, 10, 200, 32);
slider.setMinimum(0);
slider.setMaximum(100);
slider.setThumb(5);
slider.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Slider Selection:" + slider.getSelection());
}
});
//Scale
final Scale scale = new Scale(shell, SWT.HORIZONTAL);
scale.setBounds(10, 50, 200, 72);
scale.setMinimum(0);
scale.setMaximum(100);
scale.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
System.out.println("Scale Selection:" + scale.getSelection());
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步