在程序开始接收数据的时候启动线程
要注意的问题是向串口总共发送500包数据,每发送完一包进度条加1.这个可以在线程外部处理然后发送给线程让线程知道要改变进度条的样式(刻度)。
思路是没啥问题的,你是滚动菜单没出来是吧。滚动菜单你要这样写,创建滚动菜单scrolledComposite之后,再创建一个parent,然后scrolledComposite.setContent(parent)
parent.setSize(parent.computeSize(SWT.DEFAULT, SWT.DEFAULT))
然后parent记得设置layout
这样菜单才会显示,然后循环出来的composite的父组件都要设置成parent。
public class Main1{
public static void main(String[] args)
{
Display display = Display.getDefault()
Shell shell = new Shell()
shell.setBounds(50, 50, 682, 600)
shell.open()
final Label label = new Label(shell, SWT.NONE)
label.setText("Label")
final Label label_1 = new Label(shell, SWT.NONE)
label_1.setFont(SWTResourceManager.getFont("", 36, SWT.NONE))
label_1.setText("欢迎使用书店进销存管理系统")
label_1.setBounds(28, 146, 636, 69)
final ProgressBar progressBar = new ProgressBar(shell, SWT.NONE)
progressBar.setBounds(105, 395, 449, 17)
shell.layout()
shell.getDisplay().asyncExec(new Runnable(){
public void run()
{
System.out.println("dddd")
for(int i = 1i <11i++)
{
progressBar.setSelection(i * 10)
try
{
Thread.sleep(1000)
}
catch (Throwable t)
{
t.printStackTrace()
}
}
}
})
// shell.addShellListener(new ShellAdapter()
// {
//
// public void shellActivated(ShellEvent e)
// {
//System.out.println("dddd")
//for(int i = 1i <11i++)
//{
// progressBar.setSelection(i * 10)
// try
// {
// Thread.sleep(1000)
// }
// catch (Throwable t)
// {
// t.printStackTrace()
// }
//}
//
// }
//
// })
while(!shell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep()
}
display.dispose()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)