2015-05-22 75 views
0

我收到编译器错误。我一直试图解决这个几个小时,但由于我的糟糕我失败了。我突出了错误出现在加粗的地方。它在JFrame中,而不是在课堂上。JFrame编译器错误

这是类

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 

/** 
* 
* @author dsfsf 
*/ 
public class Ärende { 
    private String kategori; 
    private String budgeteradtid; 
    private String status; 
    private String kommentar; 

    public String getKategori() { 
     return kategori; 
    } 

    public void setKategori(String kategori) { 
     this.kategori = kategori; 
    } 

    public String getbudgeteradtid() { 
     return budgeteradtid; 
    } 

    public void setbudgeteradtid(String budgeteradtid) { 
     this.budgeteradtid = budgeteradtid; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setstatus(String status) { 
     this.status = status; 
    } 

    public String getKommentar() { 
     return kommentar; 
    } 

    public void setKommentar(String kommentar) { 
     this.kommentar = kommentar; 

    } 

    @Override 
    public String toString(){ 
     return this.kategori + "  Kategori:  " + this.budgeteradtid + "  Budgeterad tid:  " + this.status + "  Status:  " + 
       "  Kommentar:  " + this.kommentar; 

    } 
    public String addÄrende() throws SQLException { 
     //konrollera status på SQL-exekveringen 
     String sRet = "failure"; 
     Connection cn = null; 
     try{ 
      //Laddar db-library (derby) till applikationens minne 
      Class.forName("org.apache.derby.jdbc.ClientDriver"); 
      //specificerar uppgifter som behövs för att koppla upp sig mot databasen 
      cn = DriverManager.getConnection("jdbc:derby://localhost:1527/COURSE_STUD;create=true;user=course_user;password=pwd");    
      //Kontrollera uppkoppling mot db 
      if (cn == null){ 
       throw new SQLException("Uppkoppling mot databas saknas!"); 
      } 
      //specificerar vilket SQL-uttryck som ska köras mot db 
      PreparedStatement stmt = cn.prepareStatement("INSERT INTO ärende (kategori,budgeteradtid,status,kommentar)" 
          + "VALUES (?,?,?,?)"); 
      stmt.setString(1, getKategori()); 
      stmt.setString(2, getbudgeteradtid()); 
      stmt.setString(3, getStatus()); 
      stmt.setString(4, getKommentar()); 
      //Kör SQL-uttryck 
      int i = stmt.executeUpdate(); 
      //Kontrollera resultat av SQL-uttryck 
      if (i > 0) 
       sRet = "success"; 
      return sRet; //returnera status från SQL-exekvering 
     } 
     catch (ClassNotFoundException | SQLException ex) { 
      throw new SQLException("Problem med db:" + ex.getMessage()); 
     }finally{ 
      if (cn!=null) 
       cn.close(); 
     } 
    } 
    public ArrayList<Ärende> getÄrende() throws SQLException{ 
     //Läs in information om db-uppkoppling 
     Connection cn = null; 
     //håller en lista med ett student-objekt för varje post i db 
     ArrayList ärendeList = new ArrayList<>(); 
     try{ 
      //Laddar db-library (derby) till applikationens minne 
      Class.forName("org.apache.derby.jdbc.ClientDriver"); 
      //specificerar uppgifter som behövs för att koppla upp sig mot databasen 
      cn = DriverManager.getConnection("jdbc:derby://localhost:1527/Fiktivt_AB;create=true;user=fiktivt;password=fiktivt"); 
      //Kontrollera uppkoppling mot db 
      if (cn == null){ 
       throw new SQLException("Uppkoppling mot databas saknas!"); 
      } 
      PreparedStatement stmt = cn.prepareStatement("SELECT kategori,budgeteradtid,status, kommentar FROM ärende " 
          + "WHERE ärendeid = ?"); 

      //Kör SQL-uttryck och ladda upp posterna i ResultSet variabel rs 
      ResultSet rs = stmt.executeQuery(); 
      //Ladda lista med data från ResultSet (rs) 
      while (rs.next()){ 
       //För varje post i db skapas ett student-objekt 
       Ärende s = new Ärende(); 
       s.setKategori(rs.getString("kategori")); 
       s.setbudgeteradtid(rs.getString("budgeteradtid")); 
       s.setstatus(rs.getString("status")); 
       s.setKommentar(rs.getString("kommentar")); 
       //Lägg till student-objekt i arraylist 
       ärendeList.add(s); 
      } 
      return ärendeList; 
     }catch (ClassNotFoundException | SQLException ex) { 
      throw new SQLException("Problem med db:" + ex.getMessage()); 
     }finally{ 
      if (cn!=null) 
       cn.close(); 
     } 

    } 
} 

这是JFrame的代码

import java.awt.HeadlessException; 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import javax.swing.DefaultListModel; 
import javax.swing.JOptionPane; 


/** 
* 
* @author lrofke 
*/ 
public class JFrameFormTest extends javax.swing.JFrame { 
    DefaultListModel listModel = new DefaultListModel(); 

    /** 
    * Creates new form JFrameFormTest 
    */ 
    public JFrameFormTest() { 
     initComponents(); 
     initÄrendeList(); 
    } 

    private void initÄrendeList(){ 
     **lstÄrende**.setModel(listModel); 
     //Töm lista 
     listModel.clear(); 
     //Ladda listan med poster från db 
     Ärende s = new Ärende(); 
     //Hämta lista med studenter 
     ArrayList <Ärende> ärendeList; 
     try { 
      ärendeList = s.getÄrende(); 
      //Ladda lista med studenter 
      for (Ärende st : ärendeList){ 
       listModel.addElement(st.toString()); 
      } 
     } catch (SQLException ex) { 
      JOptionPane.showMessageDialog(this, "FEL! " + ex.getMessage()); 
     } 
     //Justera om "tabort"-knappen ska vara tillgänglig 
     int index = listModel.getSize(); 
     if (index > 0){ //enable delete . 
      btnDelete.setEnabled(true); 
     } 
    } 
    /** 
    * 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") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     jLabel1 = new javax.swing.JLabel(); 
     txtKategori = new javax.swing.JTextField(); 
     jLabel2 = new javax.swing.JLabel(); 
     txtBudgeteradTid = new javax.swing.JTextField(); 
     jLabel3 = new javax.swing.JLabel(); 
     javax.swing.JTextField txtStatus = new javax.swing.JTextField(); 
     btnAdd = new javax.swing.JButton(); 
     jLabel4 = new javax.swing.JLabel(); 
     txtKommentar = new javax.swing.JTextField(); 
     jPanel2 = new javax.swing.JPanel(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     lstStudents = new javax.swing.JList(); 
     btnDelete = new javax.swing.JButton(); 
     jButton1 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Student")); 

     jLabel1.setText("Kategori:"); 

     txtKategori.setText("Kategori"); 
     txtKategori.setName(""); // NOI18N 
     txtKategori.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       txtKategoriActionPerformed(evt); 
      } 
     }); 

     jLabel2.setText("Budgeterad tid:"); 

     txtBudgeteradTid.setText("Budgeterad tid"); 
     txtBudgeteradTid.setToolTipText(""); 
     txtBudgeteradTid.setName(""); // NOI18N 

     jLabel3.setText("Status"); 

     txtStatus.setHorizontalAlignment(javax.swing.JTextField.LEFT); 
     txtStatus.setText("Status"); 
     txtStatus.setName(""); // NOI18N 
     txtStatus.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       txtStatusActionPerformed(evt); 
      } 
     }); 

     btnAdd.setText("Lägg till ärende"); 
     btnAdd.setToolTipText(""); 
     btnAdd.setName(""); // NOI18N 
     btnAdd.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       btnAddActionPerformed(evt); 
      } 
     }); 

     jLabel4.setText("Kommentar"); 

     txtKommentar.setText("Ange kommentar"); 
     txtKommentar.setToolTipText(""); 
     txtKommentar.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       txtKommentarActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jLabel1) 
        .addComponent(jLabel3) 
        .addComponent(jLabel4)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addGroup(jPanel1Layout.createSequentialGroup() 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) 
          .addComponent(txtKategori, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE) 
          .addComponent(txtStatus)) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jLabel2) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(btnAdd, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) 
          .addComponent(txtBudgeteradTid, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE))) 
        .addComponent(txtKommentar, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE))) 
     ); 

     jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btnAdd, txtBudgeteradTid}); 

     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel1) 
        .addComponent(txtKategori, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(jLabel2) 
        .addComponent(txtBudgeteradTid, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel3) 
        .addComponent(txtStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(btnAdd)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jLabel4) 
        .addComponent(txtKommentar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addGap(0, 14, Short.MAX_VALUE)) 
     ); 

     txtKategori.getAccessibleContext().setAccessibleName(""); 

     jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Objektorienterad programutveckling")); 

     lstStudents.setModel(new javax.swing.AbstractListModel() { 
      String[] strings = { " " }; 
      public int getSize() { return strings.length; } 
      public Object getElementAt(int i) { return strings[i]; } 
     }); 
     lstStudents.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
     lstStudents.setName("lstStudents"); // NOI18N 
     jScrollPane1.setViewportView(lstStudents); 

     btnDelete.setText("Ta bort"); 
     btnDelete.setEnabled(false); 
     btnDelete.setName("btnRemove"); // NOI18N 
     btnDelete.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       btnDeleteActionPerformed(evt); 
      } 
     }); 

     jButton1.setText("Starta webapp"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); 
     jPanel2.setLayout(jPanel2Layout); 
     jPanel2Layout.setHorizontalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel2Layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jScrollPane1) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(btnDelete) 
        .addComponent(jButton1)) 
       .addContainerGap()) 
     ); 
     jPanel2Layout.setVerticalGroup(
      jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel2Layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGroup(jPanel2Layout.createSequentialGroup() 
         .addComponent(btnDelete) 
         .addGap(84, 84, 84) 
         .addComponent(jButton1))) 
       .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       .addContainerGap()) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap()) 
     ); 

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

    private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {          
     // TODO add your handling code here: 
     //Skapa nytt student-objekt och 
     //läs in värdena från resp. textbox i JFrame-dialogen 
     Ärende s = new Ärende(); 
     s.setKategori(txtKategori.getText()); 
     s.setbudgeteradtid(txtBudgeteradTid.getText()); 
     s.setStatus(txtStatus.**getText**()); 

     try {  
      //Anropa metod för att lägga till student 
      if (s.addÄrende().equals("success")){ 
       //Ladda listan med studenter från db 
       initÄrendeList(); 
      }else{ 
       JOptionPane.showMessageDialog(this, "Kunde inte lägga till student!"); 
      } 
     } catch (SQLException | HeadlessException ex) { 
      JOptionPane.showMessageDialog(this, "FEL! " + ex.getMessage()); 
     } 

    }          

    private void txtKategoriActionPerformed(java.awt.event.ActionEvent evt) {            
     // TODO add your handling code here: 
    }           

    private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
     JOptionPane.showMessageDialog(this, "Funktion ej implementerad!", "Meddelande", JOptionPane.WARNING_MESSAGE); 
    }           

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
     //Öppna webbläsaren med den webbapplikation ni utvecklat 
     String url = "http://localhost:8080/D0007NJSFWebAppEx/"; 
     try { 
      java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); 

     } catch (IOException ex) { 
      JOptionPane.showMessageDialog(this, "FEL! " + ex.getMessage()); 
     } 

    }           

    private void txtKommentarActionPerformed(java.awt.event.ActionEvent evt) {            
     // TODO add your handling code here: 
    }            

    private void txtStatusActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
    }           

    /** 
    * @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(JFrameFormTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(JFrameFormTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(JFrameFormTest.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(JFrameFormTest.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 JFrameFormTest().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    private javax.swing.JButton btnAdd; 
    private javax.swing.JButton btnDelete; 
    private javax.swing.JButton jButton1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JPanel jPanel2; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JList lstStudents; 
    private javax.swing.JTextField txtBudgeteradTid; 
    private javax.swing.JTextField txtKategori; 
    private javax.swing.JTextField txtKommentar; 
    // End of variables declaration     
} 

回答

0

txtStatus被声明为一个局部变量javax.swing.JTextField txtStatus = new javax.swing.JTextField();和不会是initComponents方法的可访问的外部

lstÄrende根本没有声明,并且未定义

您可以通过NetBeans属性表修改txtStatus认定中,“规范”表

选择表单编辑器领域中,单击“代码”,在属性表,并取消选择“使用局部变量”属性

NB Properties Sheet

0

我找不到粗体部分,我种出来的时间来阅读整个代码,但有些事情要考虑:

  • 我强烈sugg最好不要在GroupLayout中使用GUI编辑器。我知道它起初很方便,你可以随意拖放物品并放置它们,但它很快就会失控。看看MigLayout,它非常好,易于学习/维护。
  • 尽量不要在您的方法/字段名称中使用特殊字符(如Ärende,只需写Arende,Aerende或您希望的)