2014-03-28 2 views
0

이진 IO 및 이벤트 처리를 사용하여 과제를 진행하고 있습니다. 이런 식으로 보입니다. 기본 코드를 대부분 가지고 있다고 생각합니다. 그리고 지금은 어려운 부분까지 생각합니다. .bin 파일의 텍스트를 별도의 텍스트 필드로 어떻게 읽을 수 있습니까? enter image description hereGUI의 텍스트 필드에 특정 텍스트를 읽을 수 있도록 설정하려면 어떻게해야합니까?

내 입력란은 현재 비어 있지만 읽음으로 표시되는 것과 같아야하며 하단의 두 개의 버튼을 사용하여 별도의 정보 집합을 통해 구문 분석 할 수 있어야합니다.

여기까지 제가 지금까지 있습니다. RecordViewerUI JFrame 폼, RecordViewerPanel JFrame 패널 및 내 네 개의 변수에 대한 모든 getter 및 setters/constructor를 포함하는 SalesAgent Java 클래스가 있습니다.

내 패널입니다. 생성 된 코드를 유감스럽게 생각합니다. 누구든지 제공 할 수있는 도움에 미리 감사드립니다.

import java.io.BufferedInputStream; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.ObjectInputStream; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.logging.Level; 
import java.util.logging.Logger; 

public class RecordViewerPanel extends javax.swing.JPanel { 

String filename = "sales.bin"; 
ArrayList<SalesAgent> customer = new ArrayList<>(); 
int curIndex = 0; 

/** 
* Creates new form RecordViewerPanel 
*/ 
public RecordViewerPanel() throws IOException, ClassNotFoundException { 
    initComponents(); 
    try { 
     ObjectInputStream in = new ObjectInputStream(
       new BufferedInputStream(
       new FileInputStream(filename))); 
     ArrayList<SalesAgent> salesForce = new ArrayList<SalesAgent>(); 
     String first = in.readUTF(); 
     String last = in.readUTF(); 
     double sales = in.readDouble(); 
     Date date = (Date) (in.readObject()); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(RecordViewerPanel.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 

private void refreshUI() { 
    SalesAgent sale = (customer.get(curIndex)); 
    firstTextField.setText(sale.getFirst()); 
    lastTextField.setText(sale.getLast()); 
    salesTextField.setText("$" + String.valueOf(sale.getSales())); 
    dateTextField.setText(String.valueOf(sale.getDate())); 
    recordPanel.repaint(); 
} 

/** 
* 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() { 

    filePanel = new javax.swing.JPanel(); 
    fileLabel = new javax.swing.JLabel(); 
    fileLabel1 = new javax.swing.JLabel(); 
    recordPanel = new javax.swing.JPanel(); 
    firstTextField = new javax.swing.JTextField(); 
    lastTextField = new javax.swing.JTextField(); 
    salesTextField = new javax.swing.JTextField(); 
    dateTextField = new javax.swing.JTextField(); 
    jLabel1 = new javax.swing.JLabel(); 
    previousButton = new javax.swing.JButton(); 
    nextButton = new javax.swing.JButton(); 

    filePanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 

    fileLabel.setBackground(new java.awt.Color(204, 204, 204)); 
    fileLabel.setText("sales.bin"); 

    fileLabel1.setBackground(new java.awt.Color(204, 204, 204)); 
    fileLabel1.setText("Current file:"); 

    javax.swing.GroupLayout filePanelLayout = new javax.swing.GroupLayout(filePanel); 
    filePanel.setLayout(filePanelLayout); 
    filePanelLayout.setHorizontalGroup(
     filePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(filePanelLayout.createSequentialGroup() 
      .addGap(94, 94, 94) 
      .addComponent(fileLabel) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     .addGroup(filePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(filePanelLayout.createSequentialGroup() 
       .addGap(20, 20, 20) 
       .addComponent(fileLabel1) 
       .addContainerGap(562, Short.MAX_VALUE))) 
    ); 
    filePanelLayout.setVerticalGroup(
     filePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(filePanelLayout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(fileLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE) 
      .addContainerGap()) 
     .addGroup(filePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(filePanelLayout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(fileLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE) 
       .addContainerGap())) 
    ); 

    recordPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 

    firstTextField.setText("jTextField1"); 

    lastTextField.setText("jTextField1"); 

    salesTextField.setText("jTextField1"); 

    dateTextField.setText("jTextField1"); 

    jLabel1.setText("First        Last        Sales       Date"); 

    previousButton.setText("<<"); 
    previousButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      previousButtonActionPerformed(evt); 
     } 
    }); 

    nextButton.setText(">>"); 
    nextButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      nextButtonActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout recordPanelLayout = new javax.swing.GroupLayout(recordPanel); 
    recordPanel.setLayout(recordPanelLayout); 
    recordPanelLayout.setHorizontalGroup(
     recordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(recordPanelLayout.createSequentialGroup() 
      .addContainerGap() 
      .addGroup(recordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(recordPanelLayout.createSequentialGroup() 
        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 415, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGap(0, 203, Short.MAX_VALUE)) 
       .addGroup(recordPanelLayout.createSequentialGroup() 
        .addComponent(firstTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGap(18, 18, 18) 
        .addComponent(lastTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGap(18, 18, 18) 
        .addComponent(salesTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGap(18, 18, 18) 
        .addComponent(dateTextField))) 
      .addContainerGap()) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, recordPanelLayout.createSequentialGroup() 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
      .addComponent(previousButton, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addComponent(nextButton, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(31, 31, 31)) 
    ); 
    recordPanelLayout.setVerticalGroup(
     recordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(recordPanelLayout.createSequentialGroup() 
      .addGap(29, 29, 29) 
      .addComponent(jLabel1) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
      .addGroup(recordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(firstTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(lastTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(salesTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addComponent(dateTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 35, Short.MAX_VALUE) 
      .addGroup(recordPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(previousButton) 
       .addComponent(nextButton)) 
      .addGap(27, 27, 27)) 
    ); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
    this.setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addComponent(filePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(recordPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addComponent(filePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(recordPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
      .addContainerGap()) 
    ); 
}// </editor-fold>       

private void previousButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    if (curIndex > 0) { 
     curIndex--; 
    } else if (curIndex == 0) { 
     curIndex = 4; 
    } 
    customer.get(curIndex); 
}            

private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    if (curIndex < 4) { 
     curIndex++; 
    } else if (curIndex == 4) { 
     curIndex = 0; 
    } 
    customer.get(curIndex); 
}           
// Variables declaration - do not modify      
private javax.swing.JTextField dateTextField; 
private javax.swing.JLabel fileLabel; 
private javax.swing.JLabel fileLabel1; 
private javax.swing.JPanel filePanel; 
private javax.swing.JTextField firstTextField; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JTextField lastTextField; 
private javax.swing.JButton nextButton; 
private javax.swing.JButton previousButton; 
private javax.swing.JPanel recordPanel; 
private javax.swing.JTextField salesTextField; 
// End of variables declaration     
} 
+0

가 salesForce'이 같은 일을하는 것'customer''으로 시작하기 위해 전화를하지만이 declearing하는'가되지 않습니다 의미합니다 생성자에 로컬로 salesForce' 그것을 넘어서 사용할 수 있습니다. 파일에서 내용을 읽는 것 같지만 아무 것도하지 않습니다 ... – MadProgrammer

+0

하지만, 내가해야 할 고객을 없애면, 내 refreshUI() 메소드의 맨 위에있는 get (curIndex)을 얻습니다. 범위에서 벗어날까요? – Tonno22

+0

네, 어떻게 읽습니까?하지만 텍스트 필드의 다른 값에 할당 할 수 있습니다. 파일에 5 세트의 정보가 있습니다. firstTextField에 성을, lastTextField에 성을, 판매에 어떻게 할당 할 수 있습니까? salesTextfield, 등등? – Tonno22

답변

1

내가 파일 형식의 어떤 이해 나 Customer 클래스가 없지만, 기본적으로, 당신은 당신이 파일에서 읽은 값에서 새 Customer를 만들 필요로 이것은 대답하기 다소 어려운 추가 customerList과에가 refreshUI

try { 
    ObjectInputStream in = new ObjectInputStream(
      new BufferedInputStream(
      new FileInputStream(filename))); 
    String first = in.readUTF(); 
    String last = in.readUTF(); 
    double sales = in.readDouble(); 
    Date date = (Date) (in.readObject()); 
    Customer cust = ...; 
    customer.add(cust); 
} catch (FileNotFoundException ex) { 
    Logger.getLogger(RecordViewerPanel.class.getName()).log(Level.SEVERE, null, ex); 
} 
refreshUI(); 
관련 문제