CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 10 of 10

Threaded View

  1. #1
    Join Date
    Aug 2009
    Posts
    12

    Unhappy Applet hangs while using JOptionPane.xxx()

    Hi to all,
    Hope you all will be fine. I have an applet of voicerecorder. The problem is when you start to record the sound it works fine.Now i want to put a condition in it, that sound can not be recorded more than 3 minutes for this, in the initial step i put the condition like

    Code:
    if(minutes > 3){
    JOptionPane.showMessageDialog(null, "Yor are not allowed to record more than 3 minutes", "Warning",JOptionPane.WARNING_MESSAGE);
    }
    But after executing this it shows a dialog box with nothing in it and after showing a long arror messages in the NetBeans output pane and when i click the exit button then the applet exits.The code snippet is as follws that do this part
    Code:
    public void start() {
    thread = new Thread(this);
    thread.setName("SamplingGraph");
    thread.start();
    seconds = 0;
    minutes = 0;
    }
    
    public void stop() {
    if (thread != null) {
    thread.interrupt();
    }
    thread = null;
    }
    
    public void run() {
    seconds = 0;
    minutes = 0;
    while (thread != null) {
    if ((playback.line != null) && (playback.line.isOpen()) ) {
    
    int milliseconds = (int)(capture.line.getMicrosecondPosition() / 1000);
    seconds =(int) (milliseconds / 1000.0);
    minutes = (int)((milliseconds / 1000.0) / 60 );
    
    
    } else if ( (capture.line != null) && (capture.line.isActive()) ) {
    
    int milliseconds = (int)(capture.line.getMicrosecondPosition() / 1000);
    seconds =(int) (milliseconds / 1000.0);
    minutes = (int)((milliseconds / 1000.0) / 60 );
    }
    
    try { thread.sleep(100); } catch (Exception e) { break; }
    
    repaint();
    
    while ((capture.line != null && !capture.line.isActive()) ||
    (playback.line != null && !playback.line.isOpen()))
    {
    try { thread.sleep(10); } catch (Exception e) { break; }
    }
    }
    seconds = 0;
    minutes = 0;
    repaint();
    }
    Then the part where i modify the things and things start going wrong
    public void paint(Graphics g) {
    Code:
                Dimension d = getSize();
                int w = d.width;
                int h = d.height;
                int INFOPAD = 15;
    
                Graphics2D g2 = (Graphics2D) g;
                g2.setBackground(getBackground());
                g2.clearRect(0, 0, w, h);
                g2.setColor(Color.white);
                g2.fillRect(0, h-INFOPAD, w, INFOPAD);
    
                if (errStr != null) {
                    g2.setColor(jfcBlue);
                    g2.setFont(new Font("serif", Font.BOLD, 18));
                    g2.drawString("ERROR", 5, 20);
                    AttributedString as = new AttributedString(errStr);
                    as.addAttribute(TextAttribute.FONT, font12, 0, errStr.length());
                    AttributedCharacterIterator aci = as.getIterator();
                    FontRenderContext frc = g2.getFontRenderContext();
    LineBreakMeasurer lbm = new LineBreakMeasurer(aci, frc);
    float x = 5, y = 25;
    lbm.setPosition(0);
    while (lbm.getPosition() < errStr.length()) {
    TextLayout tl = lbm.nextLayout(w-x-5);
    if (!tl.isLeftToRight()) {
    x = w - tl.getAdvance();
    }
    tl.draw(g2, x, y += tl.getAscent());
    y += tl.getDescent() + tl.getLeading();
    }
    } else if (capture.thread != null) {
    g2.setColor(Color.black);
    g2.setFont(font12);
    g2.drawString("Length: " + String.valueOf( minutes) + " min" + " : " + String.valueOf(seconds) + " sec", 3, h-4);
    if(minutes > 3){
    JOptionPane.showMessageDialog(null, "Yor are not allowed to record more than three minutes", "Warning",JOptionPane.WARNING_MESSAGE);
    capture.stop();
    fileName = " Press Done when complete";
    samplingGraph.stop();
    playButton.setEnabled(true);
    pauseButton.setEnabled(false);
    doneButton.setEnabled(true);
    recordButton.setText("Record");
    }
    
    
    } else {
    g2.setColor(Color.black);
    g2.setFont(font12);
    g2.drawString( fileName , 3, h-4);
    // g2.drawString("File has been recorded." , 3, h-4);
    
    if (audioInputStream != null) {
    // .. render sampling graph ..
    g2.setColor(jfcBlue);
    for (int i = 1; i < lines.size(); i++) {
    g2.draw((Line2D) lines.get(i));
    }
    
    // .. draw current position ..
    if (seconds != 0) {
    double loc = seconds/duration*w;
    g2.setColor(pink);
    g2.setStroke(new BasicStroke(3));
    g2.draw(new Line2D.Double(loc, 0, loc, h-INFOPAD-2));
    }
    }
    }
    Please tell me where i m wrong.I attach file but its size exceeds the size limit so i m unable to attach it
    Thanks in advance
    Last edited by Basit56; August 8th, 2009 at 06:09 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured