我正在研究一些SWT代码,我无法理解SWT常量如何工作,特别是他们的位置如何工作。
例如:
final Table leftTable = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION);
我在API中查找SWT.MULTI
,发现其值为1<<1
。这是什么意思?我为SWT.FULL_SELECTION
做了同样的事情,发现它的值为13
(更容易理解)。
按位OR这些是什么意思?有没有快速的方法来确定结果是什么?为什么这样做?
答案 0 :(得分:6)
有一个完整的样式位列表here和一个很好的解释here以及对按位运算符here的一般解释。
<<
是左移位运算符,如here所述。
我们举个例子:
假设您有两个样式位:
SWT.FOO = 4 // 100 binary
SWT.BAZ = 2 // 010 binary
如果您现在将SWT.FOO | SWT.BAZ
提交给Table
,结果将是:
100
OR 010
---
110 // 6 in decimal
该表现在想知道您是否选择了SWT.BAZ
。它可以通过检查以下内容来实现:
int styleBit = 6; // 110 binary
if((styleBit & SWT.BAZ) == SWT.BAZ)
{
System.out.println("SWT.BAZ selected");
}
您可以验证此计算here。