我现在正在编写VOIP JApplet,但我的Push to Talk功能有一些奇怪的代码行为。
关键事件被触发en确实一切正确,但当我在if语句中执行true检查时,它总是返回false,除非我在它前面的行中放置一个printline,然后它工作(问题是这不是一个解决方案,因为它会在客户端中运行很多因为它在一个线程中运行)。
返回的所有值都是100%正确(全部检查)
哦,当我检查价值是否为假时!isTalking()而不是说话,它也可以正常工作,但是然后它以另一种方式工作,这不是意图。
在这里我的所有情况以及它们是否有效:
第一种情况,简单检查谈话布尔值。 这个忽略了整个if语句。
class CaptureThread extends Thread {
private byte[] captureBuffer = new byte[2 * 1024];
@Override
public void run() {
try {
while (true) {
// This is statement gets ignored
if(connection.getClient().getView().getTalking()) {
第二种情况,在前面添加System.out使代码工作
class CaptureThread extends Thread {
private byte[] captureBuffer = new byte[2 * 1024];
@Override
public void run() {
try {
while (true) {
System.out.println(" "); //This System.out makes the code work
if(connection.getClient().getView().getTalking()) {
检查虚假值的第三种情况: 这段代码也像魅力一样,只是没有得到我想要的结果。
class CaptureThread extends Thread {
private byte[] captureBuffer = new byte[2 * 1024];
@Override
public void run() {
try {
while (true) {
// Checking if talking is false
if(!connection.getClient().getView().getTalking()) {
这是我的keylistener
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
talking = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
System.out.println("Released control key");
talking = false;
}
}
@Override
public void keyTyped(KeyEvent e) {
}
我真的很想知道如何让我的代码正常运行。 有什么想法为什么我的代码表现得如此异常?
提前谢谢你,