只有当控制台打印在Java前面时才会触发函数

时间:2012-11-12 09:27:24

标签: java applet voip keylistener

我现在正在编写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) {  

}

我真的很想知道如何让我的代码正常运行。 有什么想法为什么我的代码表现得如此异常?

提前谢谢你,

0 个答案:

没有答案