理解SWT常量的按位OR

时间:2013-05-28 18:55:19

标签: java swt constants bitwise-operators

我正在研究一些SWT代码,我无法理解SWT常量如何工作,特别是他们的位置如何工作。

例如:

final Table leftTable = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION);

我在API中查找SWT.MULTI,发现其值为1<<1。这是什么意思?我为SWT.FULL_SELECTION做了同样的事情,发现它的值为13(更容易理解)。

按位OR这些是什么意思?有没有快速的方法来确定结果是什么?为什么这样做?

1 个答案:

答案 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