在早期的question中,关于如何最大化JFrame,我看到了这段代码并且它有效。我拿出了
name.getExtendedState()
它仍然有效?使用什么" getter" OR符号完成了吗?
name.setExtendedState(name.getExtendedState()|JFrame.MAXIMIZED_BOTH);
答案 0 :(得分:5)
使用name.getExtendedState()|JFrame.MAXIMIZED_BOTH
表示您将 MAXIMIZED_BOTH
添加到现有的扩展状态。如果你只说 JFrame.MAXIMIZED_BOTH
,那就意味着你只用那个位替换扩展状态,并丢弃当前扩展状态的任何东西。
答案 1 :(得分:0)
来自API getExtendedState():
Gets the state of this frame. The state is represented as a bitwise mask.
NORMAL
Indicates that no state bits are set.
ICONIFIED
MAXIMIZED_HORIZ
MAXIMIZED_VERT
MAXIMIZED_BOTH
Concatenates MAXIMIZED_HORIZ and MAXIMIZED_VERT.
逻辑OR将返回的值与JFrame.MAXIMIZED_BOTH的值组合
例如,如果NORMAL为10110且MAXIMIZED_BOTH为01100,那么两个就是1110
Normal 10110
MaxBoth 01100
Result 11110
答案 2 :(得分:0)
引自维基百科:http://en.wikipedia.org/wiki/Bitwise_operation#OR
按位OR采用两个相等长度的位模式并执行 对每对相应位的逻辑包含OR运算。该 如果第一位是1或第二位,则每个位置的结果为1 是1还是两位都是1;否则,结果为0.例如:
0101 (decimal 5) OR 0011 (decimal 3) = 0111 (decimal 7)
因此,如果getExtendedState()返回一个由二进制标志组成的数字(即一个位字段)...对它进行OR算(使用管道运算符|),只需保留对象中的所有现有标志即可。 s状态和还设置对应于状态JFrame.MAXIMIZED_BOTH的位。
这是因为如果在第一个操作数或第二个操作数中它是1,则ORing将位设置为1.
希望有助于解释它。