消息对话框未执行

Posted

技术标签:

【中文标题】消息对话框未执行【英文标题】:Message dialog not being executed 【发布时间】:2017-05-02 00:21:56 【问题描述】:

当我按下按钮时,netbeans 本身说:“线程中的异常“AWT-EventQueue-0”java.lang.IllegalArgumentException:没有行匹配接口 TargetDataLine 支持格式 PCM_SIGNED 44100.0 Hz,16 位,单声道,2 字节/帧, 支持大端序。” 当线路不支持时,它应该会弹出一条错误消息说“线路不支持”。相反,什么也没有发生。 我该怎么办?

public class Ouvir extends NewJFrame

AudioFormat audioFormat;
TargetDataLine targetDataLine;
TargetDataLine line;

void captureAudio()

          Listen.setEnabled(false);
          try
          audioFormat = getAudioFormat();
          DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);
          line = (TargetDataLine) Audiosystem.getLine(info);  
          AudioSystem.getLine(info);

          if (!AudioSystem.isLineSupported(info)) 
              String error = "Line not supported";
              JOptionPane.showMessageDialog(null,error,"+",JOptionPane.ERROR_MESSAGE);
              line.close();
          

          line.open();
          line.start();
         
          catch (LineUnavailableException e) 
       

void stopCapture() 

    if(line != null)
       
       line.stop();
       line.close();
       
    if(!Stop.getModel().isPressed())
       
       line.stop();
       line.close();
       
       

private AudioFormat getAudioFormat()


       return new AudioFormat(44100,16,1,true,true);
  
  

【问题讨论】:

在测试它是否受支持之前,您会获得AudioLine 我该如何解决这个问题?不太明白 你需要在AudioSystem.getLine(info)之前调用AudioSystem.isLineSupported(info),否则你怎么知道是否支持 【参考方案1】:

基本上你正在做的是在检查是否可能之前尝试获得AudioLine

AudioSystem.getLine(info);
if (!AudioSystem.isLineSupported(info)) ...

getLine 正在抛出不受支持的异常,因为您首先调用了它。你需要颠倒你的逻辑

if (AudioSystem.isLineSupported(info)) 
    AudioSystem.getLine(info);
 else 
    // Show error

【讨论】:

以上是关于消息对话框未执行的主要内容,如果未能解决你的问题,请参考以下文章

win7弹出的消息被其他页面遮挡,怎样让弹出的对话框显示在最上面一层?

对话框中的更改未反映在可执行文件中

检索未读消息作为模型方法雄辩

RequestPermissions 未显示对话框

警报对话框中的 TextView 未居中或未格式化

GTK 小部件对话框未关闭