2013-06-30 2 views
1

주소록을 만들고 있는데, 많은 기능을 갖추고 있습니다. 그러나 실제 테이블을 볼 수 없습니다. 데이터가 있습니다. 저장하고로드 할 수는 있지만 실제로 데이터를 볼 수는 없습니다. 나는 많은 것을 시도했다. setContentPane()은 하나이다. 또한 오라클 웹 사이트에서 시간을 보냈지 만 아무 소용이 없습니다. 나는 테이블을 보여주는 샘플 테이블을 가지고 있고, 일부 코드를 복사하려고 시도했지만, 다시 쓸모가 없다.Java JTable이 보이지 않습니다.

public AddressBookGUI() 
{ 
    /* 
    * Initialise 
    */ 

    addresses = new ArrayList<Person>(); 
    Person a = new Person("Kathy", "Smith", "1 mith Sqaoiudh", "Lonodn", "London", "BN76 8QQ", "01980472", "[email protected]"); 
    addresses.add(a); 
    addressBook = new AddressBook(addresses, columnNames); 

// JTable addressTable = new JTable(new TableModel()); 
    //addressTable.setModel(new addressTable.TableModel()); 

    createAddAddressFrame(); 
    createEditAddressFrame(); 
    createDeleteAddressFrame(); 
    createAddressBookFrame(); 
} 

//Create the address book frame 
private void createAddressBookFrame() { 

    //Create frame 
    addressBookFrame = new JFrame("My Address Book"); 

    //Create menu bar 
    mb = new JMenuBar(); 

    //Create file menu 
    fileMenu = new JMenu("File"); 
     anew = new JMenuItem("New"); 
     open = new JMenuItem("Open"); 
     save = new JMenuItem("Save"); 
     saveAs = new JMenuItem("Save As"); 
     print = new JMenuItem("Print"); 
     quit = new JMenuItem("Quit"); 

    //Create edit menu 
    editMenu = new JMenu("Edit"); 
     sort = new JMenu("Sort"); 
      byName = new JMenuItem("By Name"); 
      byPC = new JMenuItem("By Post Code"); 
     editSelectedPerson = new JMenuItem("Edit Selected Person"); 
     find = new JMenuItem("Find"); 
     findAgain = new JMenuItem("Find Again"); 
    //Add menu items to menu bar and menu 
     mb.add(fileMenu); 
     fileMenu.add(anew); 
     fileMenu.add(open); 
     fileMenu.add(save); 
     fileMenu.add(saveAs); 
     fileMenu.addSeparator(); 
     fileMenu.add(print); 
     fileMenu.add(quit); 
    mb.add(editMenu); 
     editMenu.add(editSelectedPerson); 
     editMenu.add(sort); 
      sort.add(byName); 
      sort.add(byPC); 
     editMenu.addSeparator(); 
     editMenu.add(find); 
     editMenu.add(findAgain); 

    //Set menu bar 
    addressBookFrame.setJMenuBar(mb); 

    //Add buttons to bottom of frame 
    buttonPanel = new JPanel(); 
    buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); 

    //Add buttons 
    addButton = new JButton("Add"); 
    editButton = new JButton("Edit..."); 
    deleteButton = new JButton("Delete"); 
    buttonPanel.add(addButton); 
    buttonPanel.add(editButton); 
    buttonPanel.add(deleteButton); 

    //Add button panel 
    addressBookFrame.add(buttonPanel, BorderLayout.SOUTH); 

    //Add action Listeners 
    //BUTTONS 
    //Add 
    class addListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      //Set text of JTextFields 
      addAddressFrame.setVisible(true); 
     } 
    } 
    ActionListener addList = new addListener(); 
    addButton.addActionListener(addList); 

    //Edit 
    class editListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      row = myTable.getSelectedRow(); 
      if (row != -1) { 
       //jtf1.setText((String)addressBook.getValueAt(row, 0)); 
       //repeat 
      } 
     } 
    } 
    ActionListener editList = new editListener(); 
    editButton.addActionListener(editList); 

    //Delete 
    class delListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      row = myTable.getSelectedRow(); 
      if (row != -1) { 
       deleteAddressFrame.setVisible(true); 
      } 
     } 
    } 
    ActionListener delList = new delListener(); 
    deleteButton.addActionListener(delList); 


    //MENU ITEMS 
    //New 
    class newListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      addresses.clear(); 
      refreshAddressBook(); 
     } 
    } 
    ActionListener newList = new newListener(); 
    anew.addActionListener(newList); 

    //open 
    class openListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      addresses.clear(); 
      loadFile(); 
     } 
    } 
    ActionListener openList = new openListener(); 
    open.addActionListener(openList); 

    //save 
    class saveListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 

     } 
    } 
    ActionListener saveList = new saveListener(); 
    save.addActionListener(saveList); 

    //save as 
    class saveAsListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      saveToFile(); 
     } 
    } 
    ActionListener saveAsList = new saveAsListener(); 
    saveAs.addActionListener(saveAsList); 

    //print 
    class printListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      printAddresses(); 
     } 
    } 
    ActionListener printList = new printListener(); 
    print.addActionListener(printList); 

    //quit 
    class quitListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      System.exit(0); 
     } 
    } 
    ActionListener quitList = new quitListener(); 
    quit.addActionListener(quitList); 

    //edit selected person 
    class espListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 

     } 
    } 
    ActionListener espList = new espListener(); 
    editSelectedPerson.addActionListener(espList); 

    //sort by name 
    class sbnListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      sortByName(); 
     } 
    } 
    ActionListener sbnList = new sbnListener(); 
    byName.addActionListener(sbnList); 

    //sort by post code 
    class sbpcListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      } 
    } 
    ActionListener sbpcList = new sbpcListener(); 
    byPC.addActionListener(sbpcList); 

    //find 
    class findListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      } 
    } 
    ActionListener findList = new findListener(); 
    find.addActionListener(findList); 

    //find again 
    class findAgainListener implements ActionListener 
    { 
     public void actionPerformed (ActionEvent e) 
     { 
      } 
    } 
    ActionListener findAgainList = new findAgainListener(); 
    findAgain.addActionListener(findAgainList); 

    myTable = new JTable(); 
    myTable.setPreferredScrollableViewportSize(new Dimension(500,800)); 
    myTable.setFillsViewportHeight(true); 
    //myTable.setModel(addressBook); 

    JScrollPane scrollPane = new JScrollPane(myTable); 
    scrollPane.setOpaque(true); 
    addressBookFrame.add(scrollPane, BorderLayout.CENTER); 
    //addressBookFrame.add(myTable, BorderLayout.CENTER); 

    //FInally show the address book 
    addressBookFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    addressBookFrame.setTitle("My Address Book"); 
    addressBookFrame.setSize(800, 400); 
    addressBookFrame.setVisible(true); 

} 
+1

아마도 테이블 모델에 문제가있을 수 있습니다. 코드는 작동하지 않기 때문에 추측 해보십시오. –

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+1

코드'/myTable.setModel (addressBook);과'//addressBookFrame.add(myTable, BorderLayout.CENTER);에서 중요한 두 줄을 주석 처리했습니다. –

답변

2

코멘트-이 문 TableModel은 테이블의 데이터를 표시하려면 사용자 정의 TableModel

+0

답장을 보내 주셔서 감사합니다. 나는 지금 이것을 주석 처리했다. 나는 네가 옳다고 생각하고 내 식탁이야. 모델. 나는 defaultTableModel을 사용하는 것을 포함하여 몇 가지 다른 옵션을 시도했다. 이 문제의 주요 부분은 데이터 유형입니다. 저는 Person이라는 클래스를 가지고 있고 List에 주소를 저장합니다. 그러나 TableModel에서 'length'함수를 사용하려면 Object [] []이어야합니다. 이걸 어떻게 공격해야하는지에 대한 아이디어가 있습니까? 다시 한 번 감사드립니다 – user2536409

+0

@ user2536409 : 대안으로,'List '를'TableModel'에 저장하십시오; 관련된 예제가 여기에 있습니다 (http://stackoverflow.com/a/9134371/230513). – trashgod

2

작동 실제로 그 AddressBook 확인합니다 JTablemyTable

//myTable.setModel(addressBook); 

을위한 설정되도록 표 모델을 설정해야합니다

예 :

Object[][] d = {{1,2},{2,1}}; 
Object[] s = {"one", "two"}; 
tableA.setModel(new DefaultTableModel(d, s)); 
관련 문제