- それでは、次のExample 3を見てみましょう。Launcher画面のExample 3を押すと下記画面が表示されます。
 
 
 
 
 - 一番上の行をクリックして見て下さい。下記の様に、右のItemNo欄に「00010」と表示されます。
 
 
  
 
 
 それでは、StockNoに「11」と入力して、Tabを押して下さい。
 
  
  
 - Validatorにより、Errorとなりますね。
 それでは、StockNOは、「1122」として、次にDate欄に「07/1/1」といれて、「tab」を押して下さい。
 
  
  
 
 - 「2007/01/01」に自動的に変換されましたね。それでは、2行目をクリックしてみましょう。
 
  
  
 
 - 右側の表示が、2行目に連動しましたね。
 ここで、「このバタンを・・・・」を押すと、必須Checkがかかり、以下の画面が表示されます。
 
  
  
 - この様に、Tableと連動するJTextFieldが簡単にできます。
 なお、Qty欄は、LongFieldという、Golfのコンポーネントで、整数しか受け付けません。
 数字、+-の記号以外を入れても、無視されます。
 また、initBindingで、右寄せになるよう設定してあります。
 浮動小数をあつかう、DoubleFieldも用意してあります。
 多桁の数字を扱うため、近いうちに、BigDecimalも用意しようと思います。
 なおNetBeansでは、自作のコンポーネントも簡単にパレットに追加できます。
 メニューからもできますが、ソースを右クリックして、「ツール」「パレットに追加」
 が簡単です。ソースから直接編集画面のDrag and DropしてもOKです。これは感動もの。
 それでは、Programをみてみましょう。
  
public class Example3Frame extends javax.swing.JFrame  implements GolfFormInterface {
    private FormManager formManager = null;
    private GolfTableModel golfTableModel = new GolfTableModel();
    private TableBindHandler table1BindHandler = null;
    
     Creates new form Example1Frame 
    public Example3Frame() {
        initComponents();
    }
    public void initBinding(HashMap params) {
        formManager = new FormManager(this);
        formManager.init();
        formManager.createReportList(jScrollPane1);
        formManager.setValidationFromCsvResource("Example3_bind.csv");
        formManager.setBindFromCsvResource("Example3_bind2.csv");
        jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        formManager.setTableColumnFromCsvResource(
    			jTable1, "Test Table", golfTableModel, "Example3_table1.csv");
        for (int i=0; i < 5; i++) {
            addNewRow();
        }
        TableUtil.SetPreferedColumnWIdth(jTable1, new int[]{15,40,60,150,40,80 });
        table1BindHandler = GolfBindingUtil.createTableBindHandler (golfTableModel);
        GolfBindingUtil.bindTableRowColumn(table1BindHandler, golfTableModel,"jTextField1","ItemNo");
        GolfBindingUtil.bindTableRowColumn(table1BindHandler, golfTableModel,"jTextField2","StockNo");
        GolfBindingUtil.bindTableRowColumn(table1BindHandler, golfTableModel,"longField1","Qty");
        GolfBindingUtil.bindTableRowColumn(table1BindHandler, golfTableModel,"jTextField4","Date");    
        longField1.setHorizontalAlignment(JTextField.RIGHT);
    }
 
    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        addNewRowWhenCursorLastRow(); 
    }                                    
    private void jTable1KeyReleased(java.awt.event.KeyEvent evt) {                                    
        if (TableUtil.checkRowDownEvent(evt)) {
        addNewRowWhenCursorLastRow();            
        }
    }                                   
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
         formManager.getFormValidationManager().Validate(true);
    }                                        
    
    public FormManager getFormManager() {
        return formManager;
    }
    public JMenuBar getMenu() {
        return null;
    }
    public JPanel getContentPanel() {
                return null;
    }
    private void addNewRow() {
                 TableUtil.addNewRowWithItemNo (golfTableModel,1,10,5);
    }
                                  
    private void addNewRowWhenCursorLastRow() {
        if (jTable1.getSelectedRow() == jTable1.getRowCount() -1) {
            addNewRow();
        }
    }
    public void processAction(HashMap params) {
    }
    public void setFormManger(FormManager formManager) {
        this.formManager = formManager;
    }
- 赤字の所が、Example2に追加した所です。
 TableBindHandlerが新たに追加になり、これがTableとJTextFieldのBindingを管理しています。
 Validatorは、基本的にTableの項目に設定します。JTextFieldにも設定しても構いませんが、
 エラーが2重に表示されてしまいます。ただし、ShortDateやLognDateのFormatterとして、機能
 させるため、DateValidatorは、JTextFildにも設定した方が良いと思います。
 それでは、次のExampleで、画面の一部のみを置き換える機能を見ていきましょう。
  
  - Example 4へのリンク
 
  
  - GOLF HOMEへのリンク
 
 
 |