SWT 高级控件(三)
SWT 高级控件(3)
好久没更新了,今天我来介绍SWT的控件是:Scale,Slider,Spinner,DateTime,ToolTip
1.scale:
Style: SWT.HORIZONTAL,SWT.VERTICAL(这两个属性是互斥的),SWT.BORDER
Event:SelectionListener 其他是control默认能出发的事件
例子:
Display display = new Display(); Shell shell = new Shell(display); Scale scaleH = new Scale(shell, SWT.NULL); Scale scaleV = new Scale(shell, SWT.VERTICAL); scaleH.setBounds(0, 0, 100, 50); scaleV.setBounds(0, 50, 50, 100); System.out.println("Min: " + scaleH.getMinimum()); System.out.println("Max: " + scaleH.getMaximum()); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose();
效果图:
2.slider:
Style: SWT.HORIZONTAL,SWT.VERTICAL(这两个属性是互斥的),SWT.BORDER
Event:SelectionListener 其他是control默认能出发的事件
例子:
Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new GridLayout(1, true)); Label label = new Label(shell, SWT.NULL); label.setText("Volume:"); final Slider slider = new Slider(shell, SWT.VERTICAL); slider.setBounds(0, 0, 40, 200); slider.setMaximum(24); slider.setMinimum(0); slider.setIncrement(1); slider.setPageIncrement(5); slider.setThumb(4); final Text value = new Text(shell, SWT.BORDER | SWT.SINGLE); value.setEditable(false); slider.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); value.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER)); slider.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { int perspectiveValue = slider.getMaximum() - slider.getSelection() + slider.getMinimum() - slider.getThumb(); value.setText("Vol: " + perspectiveValue); } }); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose();
效果图:
3.spinner:
Style:SWT.BORDER,SWT.READD_ONLY,SWT.WRAP,
Event:ModifyListener,SelectionListener,其他是control默认能出发的事件
例子:
Display display = new Display(); Shell shell = new Shell(display); Spinner spinner = new Spinner(shell, SWT.BORDER); spinner.setBounds(30, 20, 60, 20); spinner.setDigits(3); spinner.setMinimum(0); spinner.setMaximum(1000); spinner.setSelection(500); spinner.setIncrement(1); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose();
效果图:
4.DateTime:
Style:SWT.DATE,SWT.TIME,SWT.CALENDAR,
Event:SelectionListener 其他是control默认能出发的事件
例子:
Display display = new Display(); Shell shell = new Shell(display); DateTime dateTime = new DateTime(shell, SWT.BORDER); dateTime.setBounds(10, 10, 158, 24); DateTime dateTime_1 = new DateTime(shell, SWT.BORDER | SWT.TIME); dateTime_1.setBounds(10, 40, 158, 24); DateTime dateTime_2 = new DateTime(shell, SWT.BORDER | SWT.CALENDAR); dateTime_2.setBounds(10, 70, 158, 160); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose();
效果图:
5.ToolTip:
Style:SWT.ICON_ERROR,SWT.ICON_INFORMATION,SWT.ICON_WARNING(这3个是互斥的,也可以一个都不选,就是没有图片) SWT.BALLOON
Event:SelectionListener 其他是widget默认能出发的事件。
例子1:
final int TOOLTIP_HIDE_DELAY = 300; // 0.3s final int TOOLTIP_SHOW_DELAY = 1000; // 1.0s Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new GridLayout()); Label label = new Label(shell, SWT.BORDER); label.setText("test tool tip"); final ToolTip tip = new ToolTip(label.getShell(), SWT.BALLOON); tip.setText("tool tip"); tip.setMessage("test tool tip"); tip.setAutoHide(false); label.addListener(SWT.MouseHover, new Listener() { public void handleEvent(Event event) { tip.getDisplay().timerExec(TOOLTIP_SHOW_DELAY, new Runnable() { public void run() { tip.setVisible(true); } }); } }); label.addListener(SWT.MouseExit, new Listener() { public void handleEvent(Event event) { tip.getDisplay().timerExec(TOOLTIP_HIDE_DELAY, new Runnable() { public void run() { tip.setVisible(false); } }); } }); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose();
效果图:
例子2(show in tray):
Display display = new Display(); Shell shell = new Shell(display); Image image = null; final ToolTip tip = new ToolTip(shell, SWT.BALLOON | SWT.ICON_INFORMATION); tip.setMessage("Here is a message for the user. When the message is too long it wraps. I should say something cool but nothing comes to my mind."); Tray tray = display.getSystemTray(); if (tray != null) { TrayItem item = new TrayItem(tray, SWT.NONE); image = new Image(display, "cut.png"); item.setImage(image); tip.setText("Notification from a tray item"); item.setToolTip(tip); } else { tip.setText("Notification from anywhere"); tip.setLocation(400, 400); } Button button = new Button(shell, SWT.PUSH); button.setText("Press for balloon tip"); button.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { tip.setVisible(true); } }); button.pack(); shell.setBounds(50, 50, 300, 200); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } if (image != null) image.dispose(); display.dispose(); }
效果图: