2016-07-28 1 views
-4

문자열 길이를 찾는 프로그램을 만들었습니다.문자열 길이를 찾기위한 프로그램 만들기

이 내 코드 :

JTInputString = JTextfild (For input) 
    JLResult = Jlabel (For Show Lenght) 



    /* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package UIs; 

/** 
* 
* @author Mr-Enginner 
*/ 
public class String extends javax.swing.JFrame { 

    /** 
    * Creates new form String 
    */ 
    public String() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    public static void main(java.lang.String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new String().setVisible(true); 
      } 
     }); 
    } 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     JTInputString = new javax.swing.JTextField(); 
     JBCalculate = new javax.swing.JButton(); 
     jLabel1 = new javax.swing.JLabel(); 
     JLResult = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     JBCalculate.setText("محاسبه طول رشته"); 
     JBCalculate.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       JBCalculateActionPerformed(evt); 
      } 
     }); 

     jLabel1.setText("طول رشته :"); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(JTInputString) 
       .addContainerGap()) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(134, 134, 134) 
       .addComponent(JBCalculate) 
       .addContainerGap(147, Short.MAX_VALUE)) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addComponent(JLResult) 
       .addGap(104, 104, 104) 
       .addComponent(jLabel1) 
       .addGap(43, 43, 43)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(45, 45, 45) 
       .addComponent(JTInputString, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(18, 18, 18) 
       .addComponent(JBCalculate) 
       .addGap(39, 39, 39) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel1) 
        .addComponent(JLResult)) 
       .addContainerGap(115, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void JBCalculateActionPerformed(java.awt.event.ActionEvent evt) {            
     Lenght(); 
     Clearform(); 
    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(String.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(String.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(String.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(String.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new String().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton JBCalculate; 
    private javax.swing.JLabel JLResult; 
    private javax.swing.JTextField JTInputString; 
    private javax.swing.JLabel jLabel1; 
    // End of variables declaration     

public void Lenght(){ 
     String Str=JTInputString.getText(); 
     int str=Str.length(); 
     JLResult.setText(""+str); 
} 
public void Clearform(){ 
    JTInputString.setText(""); 
    JLResult.setText(""); 
} 



} 

와 나는이 코드를 사용하여. 그러나 어떤 일이 표시되지 :

java.lang.String Str = JTInputString.getText(); 
int str = Str.length(); 
JLResult.setText("" + str); 

을하지만 그것은 나를 JLResult에서 계산 표시되지 않습니다.

무엇이 문제입니까? 스레드 "AWT-EventQueue의-0"java.lang.RuntimeException가에서

오류

예외 : Uncompilable 소스 코드 - 호환되지 않는 유형 : java.lang.String의이 사용자 인터페이스에서 UIs.String 로 변환 할 수 없습니다. UIs.String.JBCalculateActionPerformed (String.java:90)의 String.Lenght (String.java:137) UIs.String.access $ 000 (String.java:12)의 (UIs.String $ 2.actionPerformed (String. java : 47) 에서 javax.swing.AbstractButton.fireActionPerformed (AbstractButton.java:2022) 에서 javax.swing.AbstractButton $ Handler.actionPerformed (AbstractButton.j AVA : 2348) javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:402) 에서 javax.swing.DefaultButtonModel.setPressed (DefaultButtonModel.java:259) 에서 javax.swing.plaf.basic.BasicButtonListener.mouseReleased에서 ((Component.java:6533) (javax.swing.JComponent.processMouseEvent (JComponent.java:3324) at java.awt.Component.processEvent (Component, ComponentBuilder.Java:252) 에서 ComponentSupportMouseEvent를 호출합니다. java : 6298) at java.awt.Container.processEvent (Container.java:2236) at java.awt.Component.dispatchEventImpl (Component.java:4889) at java.awt.Container.dispatchEventImpl (Container.java : 2294) at java.awt.Component.dispatchEvent (Component.java:4 java.awt.LightweightDispatcher.dispatchEvent에서 java.awt.LightweightDispatcher.processMouseEvent (Container.java:4525) 에서 java.awt.LightweightDispatcher.retargetMouseEvent (Container.java:4888)에서 711) (Container.java:4466) at java.awt.Container.dispatchEventImpl (Container.java:2280) at java.awt.Window.dispatchEventImpl (Window.java:2746) at java.awt.Component.dispatchEvent (Component.java:4711) at java.awt.EventQueue.dispatchEventImpl (EventQueue.java:758) at java.awt.EventQueue.access $ 500 (EventQueue.java:97) at java.awt.EventQueue $ 3.run (EventQueue.java:709) at java.awt.EventQueue $ 3.run (EventQueue.java:703) at java.security.AccessCont java.awt.EventQueue에서 java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege에서 java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege (ProtectionDomain.java:76) (ProtectionDomain.java:86) 에서 roller.doPrivileged (기본 방법) $ 4.run (EventQueue.java:731) at java.awt.EventQueue $ 4.run (EventQueue.java:729) at java.security.AccessController.doPrivileged (네이티브 메소드) at java.security.ProtectionDomain $ JavaSecurityAccessImpl. java.awt.EventDispatchThread에서 java.awt.EventDispatchThread.pumpOneEventForFilters에서 java.awt.EventQueue.dispatchEvent (EventQueue.java:728) (EventDispatchThread.java:201) 에서 doIntersectionPrivilege (ProtectionDomain.java:76) .java.awt.EventDispatchThread.pumpEvents에서 java.awt.EventDispatchThread.pumpEvents에서 java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:105) 에서 pumpEventsForFilter (EventDispatchThread.java:116) (EventDispatchThread.java:101) (java.awt.EventDispatchThread.run에서 EventDispatchThread.java:93) (EventDispatchThread.java:82는)

+3

은 내가 [MCVE]을 게시하는 것이 좋습니다는 (http://stackoverflow.com/help/mcve) 문제의 정확한 상황을 명확히한다. – copeg

+2

농담하는 거지? 이미 Str.length()에 들어 있습니다. for 루프는 필요 없습니다. 메소드는 길이라고해야하며 String보다 먼저 java.lang이 필요하지 않으므로 변수는 소문자로 시작해야합니다. 희망이 도움이 :) – ManoDestra

+0

'String str = JTInputString'을 사용하는 경우 오류가 표시됩니다. – Kianoush

답변

2

레이블의 텍스트를 설정하고 즉시 지우는 중입니다. 다른 방법으로

private void JBCalculateActionPerformed(java.awt.event.ActionEvent evt) { 
    Lenght(); 
    Clearform(); // <-- Remove this line 
} 

:

public void Clearform() { 
    JTInputString.setText(""); 
    JLResult.setText(""); // <-- Remove this line 
} 
+0

많은 감사드립니다. 그 일. – Kianoush

+0

게시 한 스택 추적의 포인트가 실제로 문제가 아닌 경우 무엇입니까? – ManoDestra

1

여기에 대한 대답은 더 적절 클래스를 이름을 지정하는 것입니다. java.lang.String과 JFrame UIs.String 사이의 이름 충돌이 있습니다.

네이밍 충돌을 피하기 위해 메인 프레임 TestFrame 또는 응용 프로그램에서보다 의미있는 것을 호출하십시오.

또한 변수 이름이 모두 소문자로 시작하는지 확인하십시오. 현재 변수는 클래스처럼 보이게 만듭니다. 나중에 표준 Java 코딩 표준 및 규칙을 따르지 않으면 많은 문제가 발생할 것입니다.

Google Java 표준은 그 어느 때보 다 우수합니다. check them out 님을 추천합니다.

편집 :

이 답변이 컴파일 무능력에 대한 스택 추적을 포함하여 게시 질문에 주어졌다.

Clearform() 메서드에 대한 컨트롤의 값을 지우는 문제가 계속 발생했습니다. Clearform()에 관한 문제는이 현재 질문에 대한 별도의 질문이었습니다.

+0

번호. 나는 lang.string을 추측한다. 이 문자열 표시 오류를 사용했을 때 – Kianoush

+0

스택 추적을보십시오. '호환되지 않는 소스 코드 - 호환되지 않는 유형 : java.lang.String을' – ManoDestra

+1

'의 UIs.String로 변환 할 수 없습니다. 시간 주셔서 감사합니다 – Kianoush

관련 문제