2013-06-25 70 views
-1

我想用JTable 當我輸入客戶ID,然後再上我要到同一個窗口或另一個窗口的客戶的所有細節壓上顯示特定客戶詳細Java頁面特定用戶的數據?顯示到JTable的

怎麼辦?我嘗試使用下面的代碼,但失敗。

import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.*; 
import java.util.Vector; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.*; 
import javax.swing.table.DefaultTableModel; 

public abstract class Bill extends JFrame implements ActionListener 
{ 
JTextField textFieldId; 
JLabel l1; 
JLabel l2; 
    JButton b2; 
Container c = getContentPane(); 
    ResultSet rs1 = null;   
    DefaultTableModel dtm = new DefaultTableModel(); 

Bill() 
{ 
    super("Shree Datta Digambar"); 
    setBounds(140,250,777,555); 
    c.setLayout(null); 
    textFieldId = new JTextField(); 
    l1 = new JLabel("New Customer Entry :-"); 
    l2 = new JLabel("Customer Id"); 
    l1.setBounds(10,10,340,20); 
    l2.setBounds(10,20,140,70);  
    textFieldId.setBounds(10,70,70,20);    
    b2 = new JButton("Ok");  
    b2.setBounds(10,160,50,20);   
    c.add(b2); 
    c.add(l1); 
    c.add(l2); 
    c.add(textFieldId);     
      setVisible(true); 
    setDefaultCloseOperation(EXIT_ON_CLOSE);     
      b2.addActionListener(this); 
} 
    public static void main(String[] args) 
    { 
     Bill bc=new Bill() {}; 
    } 
    public void actionPerformed(ActionEvent e) 
     { 

      System.out.println("You clicked the button");     
      if(e.getSource()==b2) 
      { 
       try 
       { 
        Connection con; 
      try { 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      } catch (ClassNotFoundException ex) { 
       Logger.getLogger(Bill.class.getName()).log(Level.SEVERE, null, ex); 
      } 
      con =DriverManager.getConnection("jdbc:odbc:devendra");      
        java.sql.Statement st = con.createStatement(); 
        PreparedStatement ps = con.prepareStatement(null); 
        ps=con.prepareStatement("SELECT FROM Customer 
              where Customer_Id = ?"); 
        rs1 = ps.executeQuery(); 
        while(rs1.next()) 
        { 
         dtm.addRow(new Object[]{ 
      rs1.getString(1),rs1.getString(2),rs1.getInt(3),rs1.getString(4) }); 
        } 
       JOptionPane.showMessageDialog(null,"You successfully Enter the Entry"); 
       } 
      catch (SQLException s) 
        { 
         System.out.println("SQL code does not execute."); 
       JOptionPane.showMessageDialog(null,"Please Enter the Detail Correctly"); 
        }   
      } 
     }} 
+0

'「我試着用下面的代碼,但不能使任何機構可以幫助我從這些錯誤,請您幫助我......」「 - 有哪些誤區?哪條線? –

+0

1)請在句子開頭添加大寫字母。還要爲單詞I使用大寫字母,並使用JEE或WAR等縮寫詞和首字母縮略詞。這使人們更容易理解和幫助。 2)請使用代碼格式化代碼,輸入/輸出和結構化文檔,如HTML或XML。爲此,請選擇樣本並單擊郵件發佈/編輯表單上方的「{}」按鈕。 3)不要設置頂級容器的大小。而是佈置內容並調用'pack()'。 –

+1

4)Java GUI可能需要在多種平臺上工作,使用不同的屏幕分辨率和使用不同的PLAF。因此,它們不利於組件的準確放置。要爲可靠的GUI組織組件,請使用佈局管理器或它們的組合,以及用於空白區域的佈局填充和邊框。 –

回答

2

有很多事情,我可以看到,不會幫助你。

  1. Billabstract。沒有理由是abstract
  2. 沒有JTable。這實際上是非常令人驚訝的,因爲你有一個實際的TableModel
  3. 你正在使用null佈局。這永遠不會幫助你。
  4. 您正在從JFrame延伸。這不是一個好主意,因爲它會立即阻止您以其他形式重新使用此課程。
  5. 您的查詢不會將任何值綁定到變量參數。
  6. 你的異常處理極不理想一點點...

一種更好的方法可能看起來像......

enter image description here

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.table.DefaultTableModel; 

public class TestTable { 

    public static void main(String[] args) { 
     new TestTable(); 
    } 

    public TestTable() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new Bill()); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    public class Bill extends JPanel implements ActionListener { 

     JTextField textFieldId; 
     JLabel l1; 
     JLabel l2; 
     JButton b2; 
     ResultSet rs1 = null; 
     DefaultTableModel dtm = new DefaultTableModel(); 

     public Bill() { 
      setLayout(new BorderLayout()); 

      JPanel fields = new JPanel(); 

      textFieldId = new JTextField(10); 
      l1 = new JLabel("New Customer Entry :-"); 
      l2 = new JLabel("Customer Id"); 
      b2 = new JButton("Ok"); 

      fields.add(l2); 
      fields.add(textFieldId); 
      fields.add(b2); 

      add(fields, BorderLayout.NORTH); 

      b2.addActionListener(this); 

      // Don't forget to add a table. 
      add(new JScrollPane(new JTable(dtm))); 

     } 

     public void actionPerformed(ActionEvent e) { 

      System.out.println("You clicked the button"); 
      if (e.getSource() == b2) { 
       PreparedStatement ps = null; 
       try { 
        Connection con; 
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
        con = DriverManager.getConnection("jdbc:odbc:devendra"); 
        ps = con.prepareStatement("SELECT FROM Customer where Customer_Id = ?"); 
        // You must bind the parameter with a value... 
        ps.setString(1, textFieldId.getText()); 
        rs1 = ps.executeQuery(); 
        while (rs1.next()) { 
         dtm.addRow(new Object[]{ 
          rs1.getString(1), rs1.getString(2), rs1.getInt(3), rs1.getString(4)}); 
        } 
        JOptionPane.showMessageDialog(null, "You successfully Enter the Entry"); 
       } catch (SQLException s) { 
        System.out.println("SQL code does not execute."); 
        s.printStackTrace(); 
        JOptionPane.showMessageDialog(null, "Please Enter the Detail Correctly"); 
       } catch (Exception exp) { 
        exp.printStackTrace(); 
        JOptionPane.showMessageDialog(this, "Failed to perform query: " + exp.getMessage()); 
       } finally { 

        try { 
         ps.close(); 
        } catch (Exception ex) { 
        } 

       } 
      } 
     } 
    } 
} 

我想你可能要花費多讀一點點時間...

+0

是的男人......感謝您的幫助。 –

+0

我會按照你的指示>再次感謝。 上帝保佑你... :) :) –

+0

它給我輸入正確的錯誤細節爲什麼這些是這樣的.. 我想在屏幕上以表格格式詳細說明那個特定客戶? 對不起,這些是我正在做的第一個重大項目,所以幫我出去 ...... –