Swing JTextField';s setText方法不更新JTextField实例

Swing JTextField';s setText方法不更新JTextField实例,swing,jlist,java,Swing,Jlist,Java,下面是一个多文件项目的部分代码。我只发布这段代码,因为我不清楚为什么setText方法不起作用。并不是这个项目的所有代码都包括在内 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; @SuppressWarnings("serial") public class

下面是一个多文件项目的部分代码。我只发布这段代码,因为我不清楚为什么setText方法不起作用。并不是这个项目的所有代码都包括在内

        import javax.swing.*;
        import javax.swing.event.*;
        import java.awt.*;
        import java.awt.event.*;

        @SuppressWarnings("serial")

        public class Controller extends JFrame implements ActionListener,ListSelectionListener 
        {

            private JButton addButton;
            private JButton deleteButton;
            private JButton viewDetailsButton;
            private JPanel btnsPnl = new JPanel();
            private JPanel mainPnl = new JPanel();
            private JPanel dataPnl = new JPanel();
            private JPanel listPnl = new JPanel();
            private JLabel loanIdLabel = new JLabel("LoanId");
            private JLabel loanName = new JLabel("Loan Name");
            private JLabel loanLender = new JLabel("Lender");
            private JLabel loanAmount = new JLabel("Loan Amount");
            private JTextField loanIdFld = new JTextField(15);
            private JTextField loanNameFld = new JTextField(15);
            private JTextField lenderFld = new JTextField(15);
            private JTextField loanamountFld = new JTextField(15);
            private DefaultListModel dlm = new DefaultListModel();
            private JList jlst=new JList(dlm);

            private loansModel model;
            private loansView loansView;

            private int selectedListIndex;
            private ListSelectionModel listSelectionModel;


        public loansController(loansModel mo)
        {
           addButton = new JButton("Add Loan");
           deleteButton = new JButton("Delete Loan");
           viewDetailsButton = new JButton("View Details of all Loans");
           model = mo;
           loansView = new loansView(mo);   
        }

        /* Builds GUI for the controller component of the
         *  Model-View-Controller implementation
         */
        public void buildGUI()
        {
            GridBagLayout gbl = new GridBagLayout();
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridx=0;
            gbc.gridy=0;
            dataPnl.setLayout(new GridLayout(4,2));
            dataPnl.add(loanIdLabel);
            dataPnl.add(loanIdFld);
            dataPnl.add(loanName);
            dataPnl.add(lenderFld);
            dataPnl.add(authorLabel);
            dataPnl.add(authorFld);
            dataPnl.add(priceLabel);
            dataPnl.add(loanamountFld); 
            gbl.setConstraints(dataPnl, gbc);
            mainPnl.add(dataPnl);    
            Dimension listDim = new Dimension(50,90);
            jlst.setPreferredSize(listDim);
            gbc.gridx = 0;
            gbc.gridy = 1;
            gbl.setConstraints(listPnl,gbc);
            listPnl.add(jlst);
            listSelectionModel= jlst.getSelectionModel();
            listSelectionModel.addListSelectionListener(new loansController(model));
            gbc.gridx=1;
            gbc.gridy=1;
            gbc.gridwidth=2;
            gbl.setConstraints(btnsPnl,gbc);    
            addButton.addActionListener(this);
            deleteButton.addActionListener(this);
            viewDetailsButton.addActionListener(this);
            btnsPnl.add(addButton);
            btnsPnl.add(deleteButton);
            btnsPnl.add(viewDetailsButton);
            mainPnl.add(listPnl);
            mainPnl.add(btnsPnl);
            getContentPane().add(mainPnl);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(800,400);
            setVisible(true);
        }

        /* Handles events coming from add,delete, and view Details 
         * buttons */
        public void actionPerformed(ActionEvent ae)
        {

            if (ae.getSource()==addButton)
            {
                String bId = loanIdFld.getText();
                String titFld = lenderFld.getText();
                String authFld = authorFld.getText();
                String priFld = loanamountFld.getText();
                boolean isAnumber;
                isAnumber = isNumeric(priFld);

                if (!isAnumber)
                {
                    JOptionPane.showMessageDialog(null, 
                        "Enter the correct loan amount",
                        "Error: Price entry",
                         JOptionPane.INFORMATION_MESSAGE);
                    priFld = loanamountFld.getText();
                    isAnumber = isNumeric(priFld);

                }

                else
                {           
                    Loan loanItem;
                    loanItem = new Loan(bId, titFld,
                    authFld,Double.parseDouble(priFld));
                    model.addLoan(loanItem);
                    dlm.addElement(bId);
                    setClearTextFld();
                }
            }

            else if (ae.getSource()== deleteButton)
            {
                model.deleteLoan(model.getSelectedListIndex());
                dlm.removeElementAt(model.getSelectedListIndex());
                setClearTextFld();
            } 

            else if (ae.getSource()==viewDetailsButton)
            {   
                loansView.buildGUI();

            }

        }




         /* This method clears the text field after the action Performed
          * method for the add and delete Buttons
          */
          public void setClearTextFld()
          {
               loanIdFld.setText("");
               lenderFld.setText("");
               authorFld.setText("");
               loanamountFld.setText("");
          }





          /* This value changed method gets the selected item in the JList
           * for performing the  
           */
          public void valueChanged(ListSelectionEvent e) 
          {

            listSelectionModel = (ListSelectionModel)e.getSource();

            int maxselectedListIndex = listSelectionModel.getMaxSelectionIndex();
            int minselectedListIndex = listSelectionModel.getMinSelectionIndex();

            System.out.println(selectedListIndex);  

            if (!listSelectionModel.isSelectionEmpty())
            {   
            for (int i = minselectedListIndex; i <= maxselectedListIndex; i++) {
                if (listSelectionModel.isSelectedIndex(i)) 
                {  
                   selectedListIndex=i;
                   System.out.println("inside valueChanged. selectedListIndex");
                   System.out.println(selectedListIndex);
                   model.setSelectedListIndex(i);
                   Loan selectedLoan = model.getLoan(i);
                   System.out.println(selectedLoan.getTitle().toString());
                   System.out.println(selectedLoan.getId());
                   System.out.println(selectedLoan.getAuthor());
                   System.out.println(selectedLoan.getTitle());
                   System.out.println((selectedLoan.getPrice()));   
        //             lenderFld.setText(selectedLoan.getTitle().toString());
          //           authorFld.setText(selectedLoan.getAuthor().toString());
            //     loanamountFld.setText(Double.toString(selectedLoan.getPrice()));


               loanIdFld.setText("1234");
               lenderFld.setText("Test LoaN NAME");
               authorFld.setText("Test lender");
               loanamountFld.setText("Test loan amount");


                }
            }
            }

          }

          }
import javax.swing.*;
导入javax.swing.event.*;
导入java.awt.*;
导入java.awt.event.*;
@抑制警告(“串行”)
公共类控制器扩展JFrame实现ActionListener、ListSelectionListener
{
私有JButton addButton;
私有JButton删除按钮;
私有JButton视图详细信息按钮;
private JPanel btnsPnl=new JPanel();
private JPanel mainpl=new JPanel();
private JPanel dataPnl=new JPanel();
private JPanel listPnl=new JPanel();
私有JLabel loanidlab=新JLabel(“LoanId”);
私人JLabel loanName=新JLabel(“贷款名称”);
私人JLabel loanLender=新JLabel(“贷款人”);
私人JLabel loanAmount=新JLabel(“贷款金额”);
私有JTextField loanIdFld=新JTextField(15);
私有JTextField loanNameFld=新JTextField(15);
私有JTextField lenderFld=新JTextField(15);
私有JTextField loanamountFld=新JTextField(15);
私有DefaultListModel dlm=新的DefaultListModel();
专用JList jlst=新JList(dlm);
私人贷款模式;
私人贷款视图贷款视图;
私有int-selectedListIndex;
私有ListSelectionModel ListSelectionModel;
公共贷款控制器(贷款模型mo)
{
addButton=新的JButton(“添加贷款”);
deleteButton=新JButton(“删除贷款”);
viewDetailsButton=新JButton(“查看所有贷款的详细信息”);
模型=mo;
loansView=新的loansView(mo);
}
/*为的控制器组件构建GUI
*模型-视图-控制器实现
*/
public void buildGUI()
{
GridBagLayout gbl=新的GridBagLayout();
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridx=0;
gbc.gridy=0;
dataPnl.setLayout(新的GridLayout(4,2));
dataPnl.add(loanidlab);
添加数据(loanIdFld);
dataPnl.add(贷款名称);
dataPnl.add(lenderFld);
dataPnl.add(authorLabel);
dataPnl.add(authorFld);
dataPnl.add(价格标签);
添加数据(loanamountFld);
gbl.setConstraints(数据PNL,gbc);
mainPnl.add(dataPnl);
尺寸列表尺寸=新尺寸(50,90);
jlst.setPreferredSize(listDim);
gbc.gridx=0;
gbc.gridy=1;
gbl.setConstraints(listPnl,gbc);
列表PNL.add(jlst);
listSelectionModel=jlst.getSelectionModel();
addListSelectionListener(新的loansController(模型));
gbc.gridx=1;
gbc.gridy=1;
gbc.gridwidth=2;
gbl.setConstraints(btnsPnl,gbc);
addButton.addActionListener(此);
deleteButton.addActionListener(此);
viewDetailsButton.addActionListener(此);
添加(添加按钮);
btnsPnl.add(删除按钮);
添加(查看详细信息按钮);
mainPnl.add(listPnl);
mainPnl.add(btnsPnl);
getContentPane().add(mainPnl);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置大小(800400);
setVisible(真);
}
/*处理来自添加、删除和查看详细信息的事件
*钮扣*/
已执行的公共无效行动(行动事件ae)
{
如果(ae.getSource()==addButton)
{
字符串bId=loanIdFld.getText();
字符串titFld=lenderFld.getText();
字符串authFld=authorFld.getText();
字符串priFld=loanamountFld.getText();
布尔数;
isAnumber=isNumeric(priFld);
如果(!isAnumber)
{
JOptionPane.showMessageDialog(null,
“输入正确的贷款金额”,
“错误:价格输入”,
JOptionPane.INFORMATION(信息和消息);
priFld=loanamountFld.getText();
isAnumber=isNumeric(priFld);
}
其他的
{           
贷款贷款;
loanItem=新贷款(投标、标题、,
authFld,Double.parseDouble(priFld));
模型。添加贷款(loanItem);
dlm.附录(标书);
setClearTextFld();
}
}
else if(ae.getSource()==deleteButton)
{
model.deleteLoan(model.getSelectedListIndex());
dlm.removeElementAt(model.getSelectedListIndex());
setClearTextFld();
} 
else if(ae.getSource()==viewDetailsButton)
{   
loansView.buildGUI();
}
}
/*此方法在执行操作后清除文本字段
*添加和删除按钮的方法
*/
public void setClearTextFld()
{
loanIdFld.setText(“”);
lenderFld.setText(“”);
authorFld.setText(“”);
loanamountFld.setText(“”);
}
/*此值更改方法获取JList中的选定项
*执行
*/
public void值已更改(ListSelectionEvent e)
{
listSelectionModel=(listSelectionModel)e.getSource();
listSelectionModel.addListSelectionListener(new loansController(model));
listSelectionModel.addListSelectionListener(this);
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

@SuppressWarnings("serial")
public class loansController extends JFrame implements ActionListener,
         ListSelectionListener {
   private JButton addButton;
   private JButton deleteButton;
   private JButton viewDetailsButton;
   private JPanel btnsPnl = new JPanel();
   private JPanel mainPnl = new JPanel();
   private JPanel dataPnl = new JPanel();
   private JPanel listPnl = new JPanel();
   private JLabel loanIdLabel = new JLabel("LoanId");
   private JLabel loanName = new JLabel("Loan Name");
   private JTextField loanIdFld = new JTextField(15);
   private JTextField lenderFld = new JTextField(15);
   private JTextField loanamountFld = new JTextField(15);
   private DefaultListModel dlm = new DefaultListModel();
   private JList jlst = new JList(dlm);
   private int selectedListIndex;
   private ListSelectionModel listSelectionModel;

   public loansController() {
      addButton = new JButton("Add Loan");
      deleteButton = new JButton("Delete Loan");
      viewDetailsButton = new JButton("View Details of all Loans");
   }

   public void buildGUI() {
      String[] data = {"one", "two", "three", "four"};
      for (String datum : data) {
         dlm.addElement(datum);
      }
      GridBagLayout gbl = new GridBagLayout();
      GridBagConstraints gbc = new GridBagConstraints();
      gbc.gridx = 0;
      gbc.gridy = 0;
      dataPnl.setLayout(new GridLayout(4, 2));
      dataPnl.add(loanIdLabel);
      dataPnl.add(loanIdFld);
      dataPnl.add(loanName);
      dataPnl.add(lenderFld);
      dataPnl.add(loanamountFld);
      gbl.setConstraints(dataPnl, gbc);
      mainPnl.add(dataPnl);
      Dimension listDim = new Dimension(50, 90);
      jlst.setPreferredSize(listDim);
      gbc.gridx = 0;
      gbc.gridy = 1;
      gbl.setConstraints(listPnl, gbc);
      listPnl.add(jlst);
      listSelectionModel = jlst.getSelectionModel();


      // ****** here, comment one line and uncomment the other
      listSelectionModel.addListSelectionListener(new loansController());
      // !! listSelectionModel.addListSelectionListener(this);


      gbc.gridx = 1;
      gbc.gridy = 1;
      gbc.gridwidth = 2;
      gbl.setConstraints(btnsPnl, gbc);
      addButton.addActionListener(this);
      deleteButton.addActionListener(this);
      viewDetailsButton.addActionListener(this);
      btnsPnl.add(addButton);
      btnsPnl.add(deleteButton);
      btnsPnl.add(viewDetailsButton);
      mainPnl.add(listPnl);
      mainPnl.add(btnsPnl);
      getContentPane().add(mainPnl);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setSize(800, 400);
      setVisible(true);
   }

   public void actionPerformed(ActionEvent ae) {
      if (ae.getSource() == addButton) {
      } else if (ae.getSource() == deleteButton) {
      } else if (ae.getSource() == viewDetailsButton) {
      }
   }

   /*
    * This method clears the text field after the action Performed method for
    * the add and delete Buttons
    */
   public void setClearTextFld() {
      loanIdFld.setText("");
      lenderFld.setText("");
      loanamountFld.setText("");
   }

   public void valueChanged(ListSelectionEvent e) {
      listSelectionModel = (ListSelectionModel) e.getSource();
      int maxselectedListIndex = listSelectionModel.getMaxSelectionIndex();
      int minselectedListIndex = listSelectionModel.getMinSelectionIndex();
      System.out.println(selectedListIndex);
      if (!listSelectionModel.isSelectionEmpty()) {
         for (int i = minselectedListIndex; i <= maxselectedListIndex; i++) {
            if (listSelectionModel.isSelectedIndex(i)) {
               selectedListIndex = i;
               System.out.println("inside valueChanged. selectedListIndex");
               System.out.println(selectedListIndex);
               loanIdFld.setText("1234");
               lenderFld.setText("Test LoaN NAME");
               loanamountFld.setText("Test loan amount");
            }
         }
      }
   }

   public static void main(String[] args) {
      loansController controller = new loansController();
      controller.buildGUI();
   }
}
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;

@SuppressWarnings("serial")
public class loansController extends JFrame implements ListSelectionListener {
   private JPanel mainPnl = new JPanel();
   private JPanel dataPnl = new JPanel();
   private JPanel listPnl = new JPanel();
   private JTextField loanIdFld = new JTextField(15);
   private JTextField lenderFld = new JTextField(15);
   private JTextField loanamountFld = new JTextField(15);
   private DefaultListModel dlm = new DefaultListModel();
   private JList jlst = new JList(dlm);
   private ListSelectionModel listSelectionModel;

   public void buildGUI() {
      String[] data = {"one", "two", "three", "four"};
      for (String datum : data) {
         dlm.addElement(datum);
      }
      dataPnl.setLayout(new GridLayout(4, 2));
      dataPnl.add(loanIdFld);
      dataPnl.add(lenderFld);
      dataPnl.add(loanamountFld);
      mainPnl.add(dataPnl);
      Dimension listDim = new Dimension(50, 90);
      jlst.setPreferredSize(listDim);
      listPnl.add(new JScrollPane(jlst));
      listSelectionModel = jlst.getSelectionModel();

      // ****** here, comment one line and uncomment the other
      // !! listSelectionModel.addListSelectionListener(new loansController());
      listSelectionModel.addListSelectionListener(this);

      mainPnl.add(listPnl);
      getContentPane().add(mainPnl);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      pack();
      setLocationRelativeTo(null);
      setVisible(true);
   }

   public void valueChanged(ListSelectionEvent e) {
      System.out.println("inside valueChanged. ");
      loanIdFld.setText("1234");
      lenderFld.setText("Test LoaN NAME");
      loanamountFld.setText("Test loan amount");
   }

   public static void main(String[] args) {
      new loansController().buildGUI();
   }
}