2014-06-13 2 views
1

자, 여기 내 문제가 있습니다. 나는 다음과 같은 코드가 있습니다 :JEditorPane 작동시키기

import java.awt.*; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.regex.Pattern; 

import javax.swing.*; 

public class SongTapper extends JFrame { 

    Date d; 
    boolean isFirstTap = true; 
    static JTapper tap; 
    URL url; 

    JLabel label = new JLabel(); 
    JEditorPane pane = new JEditorPane(); 
    JScrollPane scroll; 
    JFrame frame; 

    public void show() { 
//  d = new Date(); 
//  Date d2 = new Date(); 
//  
//  double seconds = ((d.getTime() - d2.getTime()) /1000); 
//  
//  System.out.println(seconds); 

     frame = new JFrame(); 
     tap = new JTapper(); 
     tap.setEditable(false); 
     tap.setText("Tap out a song using the Space bar"); 

     tap.addTapListener(new TapListener() { 

      String count = ""; 

      @Override 
      public void tapPerformed() { 

       if(isFirstTap){ 
        d = new Date(); 
        isFirstTap = false; 
       }else{ 
        Date tapping = new Date(); 

        double seconds = (((double)tapping.getTime() - (double)d.getTime())/1000.0); 

        String total = Double.toString(seconds) + "-0-1/"; 

        System.out.println(count += total); 


       } 

      } 

      @Override 
      public void tappingCompleted() { 
       tap.setText("Tapping completed"); 
       String fullUrl = "http://www.musipedia.org/result.html?sourceid=melody-url&tx_mpsearch_pi1%5bsubmit_button%5d=Search&tx_mpsearch_pi1%5bpc%5d=hum%20" + 
         count +"&filtertext=&coll=r&onlymatchfrom=0 "; 
       try { 
        url = new URL(fullUrl); 
        pane.setPage(url); 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       frame = new JFrame(); 
       scroll = new JScrollPane(pane); 
       frame.getContentPane().add(scroll); 
       frame.pack(); 

      } 

     }); 

     frame.setTitle("Song Tapper"); 

     //frame.getContentPane().add(scroll); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(new Dimension(250, 100)); 
     frame.getContentPane().add(tap); 

     frame.pack(); 
     frame.setVisible(true); 
     frame.setLocationRelativeTo(null); 
    } 

} 

import java.awt.Component; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Observable; 

import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class JTapper extends JTextField implements KeyListener { 

JLabel label = new JLabel("Tap out a song using the Space bar"); 
int count; 
List<TapListener> taps = new ArrayList<TapListener>(); 

public JTapper(){ 

    this.addKeyListener(this); 
} 

public void addTapListener(TapListener tapListener){ 
    taps.add(tapListener); 
} 

@Override 
public void keyTyped(KeyEvent e) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void keyPressed(KeyEvent e) { 


} 

@Override 
public void keyReleased(KeyEvent e) { 
    if(e.getKeyCode() == 32){ 
     for(TapListener tap : taps){ 
      tap.tapPerformed(); 
     } 
    } 
    else if(e.getKeyCode() == 10){ 
     for(TapListener tap : taps){ 
      tap.tappingCompleted(); 
     } 
    } 
} 

} 

무엇을 나는 스페이스 바를 탭의 타이밍이있는 URL의 중간 부분을 대체한다 할 노력하고있어,하지만 난 내부에있는 원하는 웹 사이트에서 JEditorPane을 가져 오는 데 문제가 발생했습니다.

누군가 내가 요청하는 웹 페이지를 표시하도록 수정하는 방법에 대한 단서가 있습니까?

더 이상 필요한 정보가 있으면 알려 주시기 바랍니다.

+1

시작하려면 텍스트 구성 요소와 함께 'KeyListener'를 사용하지 말고'DocumentListener' – MadProgrammer

답변

1

의 URL 부분은 좋은 쉽게 흉내 것 : JEditorPane의를 끌어 위해 당신이 그것을 내부의 창을 가진 JFrame의를 만들 것

String part = JTapper.getTapNumber()+"";//if it exists 
//if it doesn't exist just make it 
${name_of_JEditorPane}.setPage(new URL("http://www.example.com/"+part+"ending")); 

하지만 난 당신을 경고한다! 웹 페이지를 표시하는 데 JEditorPAnes를 사용하면 안됩니다. 기본 HTML 만 사용할 수 있고 javascript를 실행할 수 없기 때문입니다.