将wait方法添加到JTable

时间:2016-04-14 15:35:40

标签: java swing

编辑 - 为了澄清我的问题,我决定编辑它。

我的问题涉及以下方法:

addTransactionButton.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){

                AllGUI allGUI = new AllGUI();
                allGUI.createAllGUI();

                TCRSpecificGUI tcrGUI = new TCRSpecificGUI();
                tcrGUI.getNtryName();


                dtm.addRow(new Object[]{TCRSpecificGUI.ntryName,AllGUI.bankTransCode,TCRSpecificGUI.endToEndId,
                        AllGUI.transAmount,AllGUI.initiatingPartyId,AllGUI.initiatingPartySchemeName,
                        AllGUI.debtorName,AllGUI.debtorAddress,TCRSpecificGUI.debtorAccountType,
                        TCRSpecificGUI.creditorAccountNumber,TCRSpecificGUI.proprietaryPartyType,AllGUI.debtorAgentName,
                        AllGUI.debtorAgentCity,AllGUI.debtorAgentCountrySubDvsn,AllGUI.creditorAgentClearingSystemId,
                        TCRSpecificGUI.purpose,TCRSpecificGUI.returnRejectReasonCode,TCRSpecificGUI.returnRejectReasonAdditionalInfo,
                        AllGUI.payInstrument,AllGUI.typeOfCheck,AllGUI.passThruData,AllGUI.clearingAccount,
                        AllGUI.jobId,TCRSpecificGUI.nachaTransactionCode,AllGUI.transactionType,
                        TCRSpecificGUI.auxillaryOnUsIndicator,TCRSpecificGUI.batchTypeFromSourceSystem,
                        TCRSpecificGUI.expressMailItem,TCRSpecificGUI.returnOccurance,TCRSpecificGUI.nameOfRMessageFile});



            }

        });

正在发生的事情是首先使用allGUI.createAllGUI()方法调用GUI。这是一个具有多个JTextAreas的JFrame,供用户填写。一旦用户单击第一个GUI上的确认按钮,第二个GUI就会显示更多字段。当用户确认每个GUI时,所有JTextArea信息都保存到字符串中,然后作为新行写入JTable。 (如上所示)。

问题在于上述逻辑意味着即使在用户完成GUI中文本字段的编辑之前,程序也会移动到dtm.addRow步骤。这意味着表的第一行将是完全空白的(因为GUI字段尚未保存为字符串)。

简而言之,问题是我需要一些方法来告诉程序“在用户单击allGUI.createALLGUI()方法第二个GUI中的确认按钮之前,不要调用addRow代码。

我终于找到了解决方案。由于一些用户决定将此问题标记为“空指针”副本,因此我只需将此答案发布在此处,然后希望如果问题重新打开,我可以将其作为答案发布。

我的解决方案是将addRow方法移动到它自己的类中,如下所示:

protected static void writeRow(){

        dtm.addRow(new Object[]{TCRSpecificGUI.ntryName,AllGUI.bankTransCode,TCRSpecificGUI.endToEndId,
                AllGUI.transAmount,AllGUI.initiatingPartyId,AllGUI.initiatingPartySchemeName,
                AllGUI.debtorName,AllGUI.debtorAddress,TCRSpecificGUI.debtorAccountType,
                TCRSpecificGUI.creditorAccountNumber,TCRSpecificGUI.proprietaryPartyType,AllGUI.debtorAgentName,
                AllGUI.debtorAgentCity,AllGUI.debtorAgentCountrySubDvsn,AllGUI.creditorAgentClearingSystemId,
                TCRSpecificGUI.purpose,TCRSpecificGUI.returnRejectReasonCode,TCRSpecificGUI.returnRejectReasonAdditionalInfo,
                AllGUI.payInstrument,AllGUI.typeOfCheck,AllGUI.passThruData,AllGUI.clearingAccount,
                AllGUI.jobId,TCRSpecificGUI.nachaTransactionCode,AllGUI.transactionType,
                TCRSpecificGUI.auxillaryOnUsIndicator,TCRSpecificGUI.batchTypeFromSourceSystem,
                TCRSpecificGUI.expressMailItem,TCRSpecificGUI.returnOccurance,TCRSpecificGUI.nameOfRMessageFile});

    }

保留原始代码:

addTransactionButton.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){

                AllGUI allGUI = new AllGUI();
                allGUI.createAllGUI();

                TCRSpecificGUI tcrGUI = new TCRSpecificGUI();
                tcrGUI.getNtryName();


            }

        });

最后,在我的GUI的最后一个阶段,用户填写了JTextFields,我添加了这个:

confirmButton.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent ae){

                endToEndId=endToEndIdText.getText();
                if(checkingButton.isSelected()){
                    debtorAccountType="Checking";
                }else{
                    debtorAccountType="Savings";
                }
                creditorAccountNumber=creditorAccountNumberCombo.getSelectedItem().toString();
                proprietaryPartyType=proprietaryPartyTypeText.getText();
                purpose=purposeText.getText();
                returnRejectReasonCode=returnRejectReasonCodeText.getText();
                returnRejectReasonAdditionalInfo=returnRejectReasonAdditionalInfoText.getText();
                nachaTransactionCode=nachaTransactionCodeText.getText();
                if(yesAuxillaryButton.isSelected()){
                    auxillaryOnUsIndicator="YES";
                }else{
                    auxillaryOnUsIndicator="NO";
                }
                batchTypeFromSourceSystem=batchTypeFromSourceSystemText.getText();
                if(yesExpressButton.isSelected()){
                    expressMailItem="YES";
                }else{
                    expressMailItem="NO";
                }
                returnOccurance=returnOccuranceText.getText();
                nameOfRMessageFile=nameOfRMessageFileText.getText();

                Component component = (Component)ae.getSource();
                Window window = SwingUtilities.windowForComponent(component);
                window.dispose();

                TCRMainGUI.writeRow();



            }

        });

请注意这行代码的最底部:

TCRMainGUI.writeRow();

调用该方法来编写新行。

所以我现在有一个逻辑 1.当用户单击主JTable屏幕上的创建事务按钮时,将打开第一个GUI类。 2.用户填写字段并单击确认后,将值保存到字符串,然后打开下一个GUI。 3.用户填写第二个GUI上的字段并单击确认后保存值并调用添加行的方法 - 现在填充字符串,以便使用值写入行。

0 个答案:

没有答案