簡體   English   中英

Actionlistener將Jlist信息輸出到textarea

[英]Actionlistener outputing Jlist info to textarea

有人可以幫我解決以下問題嗎? 我想實現一個動作偵聽器,該動作偵聽器將有關突出顯示的Jlist對象的信息輸出到已經存在的textarea中。

這是我設法制作的代碼:

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

  public class ListModel extends JFrame {

   private JList list;
   private DefaultListModel model;
   private JTextField inputf;
   private JTextField inpute;
   private JTextArea text;
   private JPanel p1;
   private JPanel p2;

    public ListModel() {
      setLayout(new FlowLayout());
      model = new DefaultListModel();
      list = new JList(model);
      JButton addButton = new JButton( "Lägg till" );
      model.addElement("Kajsa Åslund");
      model.addElement("Erik Carlsson");
      model.addElement("John Åkesson");
      model.addElement("Per-arne Ingvarsson");
      model.addElement("Rebecka Asp");
      model.addElement("Linnéa Åslund");
      model.addElement("Åsa-Nisse Strong");
      model.addElement("Super Lasse");
      model.addElement("Alexander Ahl");
      model.addElement("Ann Ahl");
      model.addElement("Bo Sten");
     addButton.addActionListener(
     new ActionListener() {
        public void actionPerformed( ActionEvent event )
                     {
                     final String name=inputf.getText() + " " + inpute.getText();

                     model.addElement( name );
                 }
             }
             );
     JButton removeButton =
     new JButton( "Ta bort" );

     removeButton.addActionListener(
         new ActionListener() {

         public void actionPerformed( ActionEvent event )
             {
             setTitle("Borttagning");
             try
            {
            Thread.sleep(1000);
            }
            catch(InterruptedException e)
            {
            e.printStackTrace();
            }
             model.removeElement(list.getSelectedValue());
             setTitle("Personer");
         }
     }
     );

     text = new JTextArea(5, 20);

     inputf = new JTextField();
     inputf.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }

    });
     inpute = new JTextField();
     inpute.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }

    });
     list.setSelectionMode(
     ListSelectionModel.SINGLE_SELECTION );

     inpute.setBounds(5, 5, 100, 100);
     inpute.setPreferredSize(new Dimension(120,20));
     inputf.setBounds(10, 10, 150, 150);
     inputf.setPreferredSize(new Dimension(120,20));
     JScrollPane scroll = new JScrollPane(list);
     scroll.setPreferredSize(new Dimension(200,200));

     JPanel p2 = new JPanel();
     p2.add(text);
     p2.add(inputf);
     p2.add(inpute);
     p2.add(addButton);
     p2.add(removeButton);
     p2.setLayout(new BoxLayout(p2,BoxLayout.Y_AXIS));

     JPanel p1 = new JPanel();
     p1.add(scroll);


     Container container = getContentPane();
     container.add(p1);
     container.add(p2);
     container.setLayout(new FlowLayout());

     setDefaultCloseOperation( EXIT_ON_CLOSE );
     setSize( 500, 250 );
     setVisible( true );
 }

   public static void main( String args[] )
         {
         new ListModel();
     }
   }

提前致謝 :)

現在,您只能從list讀取的數據是名稱和姓氏,您可以使用ListSelectionListener來實現:

list.addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        text.setText(list.getSelectedValue().toString());
    }
});

將此偵聽器添加到JList對象

list.addListSelectionListener(new ListSelectionListener() {

    @Override
    public void valueChanged(ListSelectionEvent e) {
        text.setText((String) list.getSelectedValue());
    }
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM