Java Text Editor (plz help)

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Silverthan
Δημοσιεύσεις: 114
Εγγραφή: 13 Ιουν 2004 13:43
Τοποθεσία: McLaren Technology Center
Επικοινωνία:

Java Text Editor (plz help)

Δημοσίευση από Silverthan » 03 Ιουν 2005 21:25

Παιδιά, προσπαθώ να φτιάξω ένα text editor σε java (εργασία) και κολλάω μόνο στο find next (να βρει το επόμενο string του υπόλοιπου textarea). Μου πετάει error o jdkcommander οταν το πατήσω.

O κώδικας είναι ο εξής: (find kai find next)

Κώδικας: Επιλογή όλων

private void find(){
		new Finder(this,jTextArea1).show();
		
		Finder foo=new Finder(this, jTextArea1);
  //foo.setVisible(true);
  
  int where=foo.getWhere();
  String what=foo.getWhat();
  	if(where!=-1)
  	jMenuItem7.setEnabled(true);
  	else
  	jMenuItem7.setEnabled(false); 
		
	}
	
	private void findNext(){
		
		
		String text=jTextArea1.getText();
  	if(!"".equals(what)){
  		int index=text.indexOf(what,++where);
  		if(index !=-1)
  			jTextArea1.setCaretPosition(index);
  		else
  			Toolkit.getDefaultToolkit().beep();
  		}
	
  	
  	}
Εχει κανείς καμμιά ιδέα να με βοηθήσει?
Ευχαριστώ!

Άβαταρ μέλους
Dr_Java
Δημοσιεύσεις: 218
Εγγραφή: 15 Αύγ 2003 16:42
Τοποθεσία: πειραιας
Επικοινωνία:

Java Text Editor (plz help)

Δημοσίευση από Dr_Java » 04 Ιουν 2005 14:51

Γεια χαρα Silverthan

Λοιπον φιλε μου δεν ξέρω εαν θα σε βοηθήσω πολυ με αυτο αλλα κοιτα την παρακάτω μεθοδο ειναι find & replace. Υποψην εχει καποιες μεταβλητες που ειναι εκτός μεθόδου, αλλα δεν νομιζς να σε πηράζει αυτο... Εχω κάνει ακριβώς την ίδια εργασία. Κοιτα το και εαν δεν σε βοηθήσει σου στέλνω όλο το κώδικα στο attachment που ακολουθεί.

Κώδικας: Επιλογή όλων

public int findNext(boolean doReplace, boolean showWarnings) {
    JTextPane monitor = m_owner.getTextPane();
    int pos = monitor.getCaretPosition();
    if (m_modelUp.isSelected() != m_searchUp) {
      m_searchUp = m_modelUp.isSelected();
      m_searchIndex = -1;
    }

    if (m_searchIndex == -1) {
      try {
        Document doc = m_owner.getDocument();
        if (m_searchUp)
          m_searchData = doc.getText(0, pos);
        else
          m_searchData = doc.getText(pos, doc.getLength()-pos);
        m_searchIndex = pos;
      }
      catch (BadLocationException ex) {
        warning(ex.toString());
        return -1;
      }
    }
        
    String key = "";
    try { key = m_docFind.getText(0, m_docFind.getLength()); }
    catch (BadLocationException ex) {}
    if (key.length()==0) {
      warning("Please enter the target to search");
      return -1;
    }
    if (!m_modelCase.isSelected()) {
      m_searchData = m_searchData.toLowerCase();
      key = key.toLowerCase();
    }
    if (m_modelWord.isSelected()) {
      for &#40;int k=0; k<Utils.WORD_SEPARATORS.length; k++&#41; &#123;
        if &#40;key.indexOf&#40;Utils.WORD_SEPARATORS&#91;k&#93;&#41; >= 0&#41; &#123;
          warning&#40;"The text target contains an illegal "+
            "character \'"+Utils.WORD_SEPARATORS&#91;k&#93;+"\'"&#41;;
          return -1;
        &#125;
      &#125;
    &#125;

    String replacement = "";
    if &#40;doReplace&#41; &#123;
      try &#123;
        replacement = m_docReplace.getText&#40;0, 
          m_docReplace.getLength&#40;&#41;&#41;;
      &#125; catch &#40;BadLocationException ex&#41; &#123;&#125;
    &#125;

    int xStart = -1;
    int xFinish = -1;
    while &#40;true&#41; 
    &#123;
      if &#40;m_searchUp&#41;
        xStart = m_searchData.lastIndexOf&#40;key, pos-1&#41;;
      else
        xStart = m_searchData.indexOf&#40;key, pos-m_searchIndex&#41;;
      if &#40;xStart < 0&#41; &#123;
        if &#40;showWarnings&#41;
          warning&#40;"Text not found"&#41;;
        return 0;
      &#125;

      xFinish = xStart+key.length&#40;&#41;;

      if &#40;m_modelWord.isSelected&#40;&#41;&#41; &#123;
        boolean s1 = xStart>0;
        boolean b1 = s1 && !Utils.isSeparator&#40;m_searchData.charAt&#40;
          xStart-1&#41;&#41;;
        boolean s2 = xFinish<m_searchData.length&#40;&#41;;
        boolean b2 = s2 && !Utils.isSeparator&#40;m_searchData.charAt&#40;
          xFinish&#41;&#41;;
                    
        if &#40;b1 || b2&#41;    // Not a whole word
        &#123;
          if &#40;m_searchUp && s1&#41;    // Can continue up
          &#123;
            pos = xStart;
            continue;
          &#125;
          if &#40;!m_searchUp && s2&#41;    // Can continue down
          &#123;
            pos = xFinish;
            continue;
          &#125;
          // Found, but not a whole word, and we cannot continue
          if &#40;showWarnings&#41;
            warning&#40;"Text not found"&#41;;
          return 0;
        &#125;
      &#125;
      break;
    &#125;

    if &#40;!m_searchUp&#41; &#123;
      xStart += m_searchIndex;
      xFinish += m_searchIndex;
    &#125;
    if &#40;doReplace&#41; &#123;
      m_owner.setSelection&#40;xStart, xFinish, m_searchUp&#41;;
      monitor.replaceSelection&#40;replacement&#41;;
      m_owner.setSelection&#40;xStart, xStart+replacement.length&#40;&#41;, 
        m_searchUp&#41;;
      m_searchIndex = -1;
    &#125;
    else
      m_owner.setSelection&#40;xStart, xFinish, m_searchUp&#41;;
    return 1;
  &#125;

  protected void warning&#40;String message&#41; &#123;
    JOptionPane.showMessageDialog&#40;m_owner, 
      message, "Warning", JOptionPane.INFORMATION_MESSAGE&#41;;
  &#125;
&#125;
Στο attachment έχω όλο το κώδικα εαν θες δες τον απο εκει.
Συνημμένα
WoldProcessor Java Assignment 2004 from bangor uk.rar
(235.99 KiB) Μεταφορτώθηκε 222 φορές
Τελευταία επεξεργασία από το μέλος Dr_Java την 04 Ιουν 2005 17:33, έχει επεξεργασθεί 1 φορά συνολικά.
Εικόνα

Άβαταρ μέλους
agrippas
Script Master
Δημοσιεύσεις: 494
Εγγραφή: 18 Ιούλ 2002 14:52
Τοποθεσία: Υπερπέραν
Επικοινωνία:

Java Text Editor (plz help)

Δημοσίευση από agrippas » 04 Ιουν 2005 15:26

Κώδικας: Επιλογή όλων

 if&#40;!"".equals&#40;what&#41;&#41; 
Το what και το where στη findNext τι είναι;

Είναι αυτό που ορίζεις στη μέθοδο find; Αν είναι έτσι, η findNext δε θα μπορεί να τα δει οπότε εξηγείται το σφάλμα!

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης