2015-03-15 2 views
1

Этот проект требует, чтобы пользователь вводил данные в текстовые поля в диалоговом окне, доступ к которому из строки меню, и помещает данные из текстовых полей в JTable. Проблема заключается в том, что после того, как пользователь щелкает все в диалоговом окне после ввода информации в текстовое поле, диалоговое окно больше не отображается, но ничего не отображается в JTable. Заголовки JTable есть, но информация только что отправлена.Java: копирование данных из текстового поля диалогового окна в JTable

Это программа регистрации кемпинга, и все классы скомпилированы в порядке. Я только работаю над тем, чтобы сначала получить информацию из резервирования RV, но в итоге сделаю то же самое для резервирования палатки. Вот классы, которые соответствуют проверке RV. Существует конструктор RV, который имеет параметры (String (name), String (check in day), int (пребывание дней), String (выходной день), int (номер сайта) , int (требуется мощность)). Первое диалоговое окно класса:

package campingPrj; 

import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 

public class DialogCheckInRv extends javax.swing.JDialog implements ActionListener { 

private static final long serialVersionUID = 1L; 
private javax.swing.JTextField nameTxt; 
private javax.swing.JTextField dateIn; 
private javax.swing.JTextField stayingTxt; 
private javax.swing.JTextField siteNumberTxt; 
private javax.swing.JTextField checkOutDate; 
private javax.swing.JTextField powerTxt; 
private javax.swing.JButton okButton; 
private javax.swing.JButton cancelButton; 
private boolean cancel; 
private boolean okay; 


public DialogCheckInRv(java.awt.Frame parent) { 
    super(parent, true); 
    setupDialog(); 
    setTitle("RV Check In"); 
} 


private void setupDialog() { 
    setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); 

    nameTxt = new javax.swing.JTextField(27); 
    dateIn = new javax.swing.JTextField(25); 
    stayingTxt = new javax.swing.JTextField(25); 
    siteNumberTxt = new javax.swing.JTextField(27); 
    powerTxt = new javax.swing.JTextField(27); 

    okButton = new javax.swing.JButton("Ok"); 
    okButton.addActionListener(this); 
    cancelButton = new javax.swing.JButton("Cancel"); 
    cancelButton.addActionListener(this); 

    setLayout(new GridLayout(6, 1)); 

    JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    panel.add(new JLabel("Name Reserving:")); 
    panel.add(nameTxt); 
    add(panel); 

    panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    panel.add(new JLabel("Start Date (mm/dd/yy) :")); 
    panel.add(dateIn); 
    add(panel); 

    panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    panel.add(new JLabel("Days Planning on Staying:")); 
    panel.add(stayingTxt); 
    add(panel); 

    panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    panel.add(new JLabel("Requested Site Number:")); 
    panel.add(siteNumberTxt); 
    add(panel); 

    panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
    panel.add(new JLabel("Power Needed (in AMPs):")); 
    panel.add(powerTxt); 
    add(panel); 


    panel = new JPanel(); 
    panel.add(okButton); 
    panel.add(cancelButton); 
    add(panel); 

    pack(); 
    setLocationRelativeTo(null); 
} 

public void actionPerformed(java.awt.event.ActionEvent event) { 
    if (event.getSource() == okButton) { 
     okay = true; 
     cancel = false; 
     setVisible(false); 
    } 
    if (event.getSource() == cancelButton) { 
     okay = false; 
     cancel = true; 
     setVisible(false); 
    } 
} 

public boolean isOk() { 
    return okay; 
} 

public boolean isCancel() { 
    return cancel; 
} 

public String getName() { 
    return nameTxt.getText(); 
} 

public String getDateIn() { 
    return dateIn.getText(); 
} 

public String getDaysStaying() { 
    return stayingTxt.getText(); 
} 

public String getCheckOutDate() { 
    return checkOutDate.getText(); 
} 

public String getPower() { 
    return powerTxt.getText(); 
} 

public String getSiteNumber() { 
    return siteNumberTxt.getText(); 
} 

public void clear() { 
    nameTxt.setText(null); 
    dateIn.setText(null); 
    stayingTxt.setText(null); 
    dateIn.setText(null); 
    powerTxt.setText(null); 
    siteNumberTxt.setText(null); 
} 

} 

Графический интерфейс с таблицей (где я предполагаю, что проблема в методе actionPerformed):

package campingPrj; 

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

@SuppressWarnings("serial") 
public class GUICampingReg extends javax.swing.JFrame implements ActionListener { 

private JMenuItem openSerialFileItem = new JMenuItem("Open Serialized File"); 
private JMenuItem openTextFileItem = new JMenuItem("Open Text File"); 
private JMenuItem saveSerialFileItem = new JMenuItem("Save Serialized File"); 
private JMenuItem saveTextFileItem = new JMenuItem("Save Text File"); 
private JMenuItem exitItem = new JMenuItem("Exit"); 
private JMenuItem checkInTentItem = new JMenuItem("Check in tent"); 
private JMenuItem checkInRVItem = new JMenuItem("Check in RV"); 
private JMenuItem checkOutItem = new JMenuItem("Date Leaving"); 

private JTextField nameReservingTxt; 
private JTextField dateInTxt; 
private JTextField daysStayingTxt; 
private JTextField checkOutOnTxt; 
private JTextField siteNumberTxt; 
private JTextField powerTxt; 

private JFrame frame; 
private JTable table; 
private SiteModel model; 
private JScrollPane scrollPane; 
private DialogCheckInRv newRv; 

public GUICampingReg() { 
    setupFrame(); 
    newRv = new DialogCheckInRv(this); 
    model = new SiteModel(); 
    table.setModel(model); 
} 

private void setupFrame() { 
    frame = new JFrame(); 
    frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    frame.setTitle("Camping Registration Program"); 

    scrollPane = new JScrollPane(); 
    table = new JTable(); 

    JMenuBar menubar = new JMenuBar(); 

    JMenu fileMenu = new JMenu("File"); 
    fileMenu.add(openSerialFileItem); 
    fileMenu.add(openTextFileItem); 
    fileMenu.add(saveSerialFileItem); 
    fileMenu.add(saveTextFileItem); 
    fileMenu.add(exitItem); 

    JMenu checkInMenu = new JMenu("Check In"); 
    checkInMenu.add(checkInRVItem); 
    checkInMenu.add(checkInTentItem); 

    JMenu checkOutMenu = new JMenu("Check Out"); 
    checkOutMenu.add(checkOutItem); 

    menubar.add(fileMenu); 
    menubar.add(checkInMenu); 
    menubar.add(checkOutMenu); 

    openSerialFileItem.addActionListener(this); 
    openTextFileItem.addActionListener(this); 
    saveSerialFileItem.addActionListener(this); 
    saveTextFileItem.addActionListener(this); 
    exitItem.addActionListener(this); 
    checkInTentItem.addActionListener(this); 
    checkInRVItem.addActionListener(this); 
    checkOutItem.addActionListener(this); 

    frame.setJMenuBar(menubar); 

    scrollPane 
      .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    table.setToolTipText(""); 
    table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 
    table.getTableHeader().setReorderingAllowed(false); 
    table.addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      tableMouseClicked(); 
     } 

    }); 

    scrollPane.setViewportView(table); 
    frame.add(scrollPane, BorderLayout.CENTER); 

    frame.pack(); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

private void tableMouseClicked() { 
    // TODO Auto-generated method stub 

} 

public void actionPerformed(ActionEvent evt) { 
    Object pressed = evt.getSource(); 

    if (pressed == exitItem) { 
     System.exit(0); 
    } 
    if (pressed == openSerialFileItem) { 

    } 
    if (pressed == openTextFileItem) { 

    } 
    if (pressed == saveSerialFileItem) { 

    } 
    if (pressed == saveTextFileItem) { 

    } 
    if (pressed == checkInTentItem) { 

    } 
    if (pressed == checkInRVItem) { 
     newRv.clear(); 
     newRv.setVisible(true); 
     if (newRv.isOk()) { 
      String nameReserving = nameReservingTxt.getText(); 
      String checkIn = dateInTxt.getText(); 
      int daysStaying = Integer.parseInt(daysStayingTxt.getText()); 
      String checkOutOn = checkOutOnTxt.getText(); 
      int siteNumber = Integer.parseInt(siteNumberTxt.getText()); 
      int power = Integer.parseInt(powerTxt.getText()); 
      RV rv = new RV (nameReserving, checkIn, daysStaying, checkOutOn, siteNumber, power); 
      model.add(rv); 
     } 

    } 
    if (pressed == checkOutItem) { 

    } 

} 

public static void main(String args[]) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      new GUICampingReg(); 
     } 
    }); 
} 

} 

Модель сайта Класс:

package campingPrj; 

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.util.ArrayList; 

import javax.swing.table.AbstractTableModel; 

public class SiteModel extends AbstractTableModel { 

private static final long serialVersionUID = 1L; 
private ArrayList<Site> listSites; 
private String[] columnNames = { "Name Reserving", "Checked in Date", 
     "Days Staying", "Site #", "Tenters/RV Power Needed" }; 

public SiteModel() { 
    listSites = new ArrayList<Site>(); 
} 

public String getColumnName(int col) { 
    return columnNames[col]; 
} 

public int getColumnCount() { 
    return columnNames.length; 
} 

public int getRowCount() { 
    return listSites.size(); 
} 

public Object getValueAt(int row, int col) { 
    Object val = null; 
    switch (col) { 
    case 0: 
     val = listSites.get(row).getNameReserving(); 
     break; 
    case 1: 
     val = listSites.get(row).getCheckIn(); 
     break; 
    case 2: 
     val = listSites.get(row).getDaysStaying(); 
     break; 
    case 3: 
     val = listSites.get(row).getSiteNumber(); 
     break; 
    case 4: 
     val = listSites.get(row).getCheckOutOn(); 
     break; 

    } 
    return val; 
} 

public Site get(int index) { 
    return listSites.get(index); 
} 

public int indexOf(Site s) { 
    return listSites.indexOf(s); 
} 

public void add(Site s) { 
    if (s != null) { 
     listSites.add(s); 
     fireTableRowsInserted(listSites.size() - 1, listSites.size() - 1); 
    } 
} 

public void add(int index, Site s) { 
    if (s != null) { 
     listSites.add(index, s); 
     fireTableRowsInserted(index, index); 
    } 
} 

public void remove(int index) { 
    listSites.remove(index); 
    fireTableRowsDeleted(index, index); 
    return; 
} 

public void remove(Site s) { 
    remove(indexOf(s)); 
} 

public void saveAsSerialized(String filename) throws IOException { 
    FileOutputStream fos = new FileOutputStream(filename); 
    ObjectOutputStream os = new ObjectOutputStream(fos); 
    os.writeObject(listSites); 
    os.close(); 
} 

@SuppressWarnings("unchecked") 
public void loadFromSerialized(String filename) throws IOException, 
     ClassNotFoundException { 
    FileInputStream fis = new FileInputStream(filename); 
    ObjectInputStream is = new ObjectInputStream(fis); 
    listSites = (ArrayList<Site>) is.readObject(); 
    is.close(); 
} 

} 

Итак, как я могу получить информацию в JTable?

ответ

2

Возможно, я неверно истолковал ваш код, но не вижу, где вы извлекаете информацию, которую пользователь вводит в диалог. Например здесь:

if (newRv.isOk()) { 
     String nameReserving = nameReservingTxt.getText(); 
     String checkIn = dateInTxt.getText(); 
     int daysStaying = Integer.parseInt(daysStayingTxt.getText()); 
     String checkOutOn = checkOutOnTxt.getText(); 
     int siteNumber = Integer.parseInt(siteNumberTxt.getText()); 
     int power = Integer.parseInt(powerTxt.getText()); 
     RV rv = new RV (nameReserving, checkIn, daysStaying, checkOutOn, siteNumber, power); 
     model.add(rv); 
    } 

Вы, кажется, извлечения информации из полей, принадлежащих GUICampingReg, а не объектом newRv. Разве вы не должны вызывать методы newRv для извлечения данных, необходимых для создания вашего объекта RV?

, например,

if (newRv.isOk()) { 
     String nameReserving = newRv.getName(); 
     String checkIn = newRv.getDateIn(); 

     // .... etc 

     RV rv = new RV (nameReserving, checkIn, daysStaying, checkOutOn, siteNumber, power); 
     model.add(rv); 
    } 
+0

Да! Ничего себе, я не могу поверить, что не видел этого. Спасибо огромное! – TABmayfield

+0

@TABmayfield: добро пожаловать, и радостные вещи продвигаются вперед. –

Смежные вопросы