Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JButton ActionListener填充JList_Java_Swing_Jframe_Jbutton_Jlist - Fatal编程技术网

Java 从JButton ActionListener填充JList

Java 从JButton ActionListener填充JList,java,swing,jframe,jbutton,jlist,Java,Swing,Jframe,Jbutton,Jlist,在按下按钮后尝试填充JList时遇到很多问题。下面的代码使用了我以前成功使用过的一种技术,但我一直无法使其正常工作。目标是在按下按钮后运行测试,并在单独的JLists中显示通过的URL和失败的URL 操作侦听器: //Start button--starts tests when pressed. JButton start = new JButton("Start"); start.setPreferredSize(new Dimension(400, 40)

在按下按钮后尝试填充JList时遇到很多问题。下面的代码使用了我以前成功使用过的一种技术,但我一直无法使其正常工作。目标是在按下按钮后运行测试,并在单独的JLists中显示通过的URL和失败的URL

操作侦听器:

//Start button--starts tests when pressed.
        JButton start = new JButton("Start"); 
        start.setPreferredSize(new Dimension(400, 40));
        start.setAlignmentX(Component.CENTER_ALIGNMENT); 
        start.addActionListener(new Web(urlA, codeA, cb, passJ, failJ));
        panel2.add(start); 
操作侦听器方法:

    import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JList;


public class Web implements ActionListener {
    private ArrayList<String> urls; 
    private ArrayList<Integer> statusCodes;
    private JComboBox cb;

    private JList passJ = new JList();  
    private JList failJ = new JList(); 

    //constructor--allows other values to be used
    public Web(ArrayList<String> urls, ArrayList<Integer> statusCodes, JComboBox cb, JList passList, JList failList ){
        this.urls = urls; 
        this.statusCodes = statusCodes; 
        this.cb = cb;
        this.passJ = passJ;
        this.failJ = failJ; 

    }


    @Override
public void actionPerformed(ActionEvent event){

        ArrayList<String> resultsP = new ArrayList<String>(); 
        ArrayList<String> resultsF = new ArrayList<String>();

        //get source
        JButton start = (JButton) event.getSource();


        //get value from combobox
        String selected = cb.getSelectedItem().toString(); 

        if(selected.equals("ALL")){

        }

        if(selected.equals("STATUS CODE")){

            for(int i = 0; i < urls.size(); i++){


            try {
                URL u = new URL(urls.get(i));
                HttpURLConnection connection = (HttpURLConnection)u.openConnection(); //open connection and cast to HttpURLConnection
                connection.setRequestMethod("GET"); 
                connection.connect(); 
                int code = connection.getResponseCode();

                if (code == statusCodes.get(i)){
                    System.out.println(i + "."+ urls.get(i)+" \t\t\t PASS");
                    resultsP.add(urls.get(i)); 

                    }
                else{
                    System.out.println(i + "." +urls.get(i)+ "\t\t\t FAIL");
                    resultsF.add(urls.get(i)); 


                }

            } catch (MalformedURLException | ProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 



} 

            for (String str: resultsP){
                System.out.println(str);
            }
            System.out.println("/////////////////////////////////////////////////////////////////////////////////"); 
            for (String str: resultsF){
                System.out.println(str); 
            }

            passJ.removeAll(); 
            failJ.removeAll();

            passJ.setListData(resultsP.toArray());
            failJ.setListData(resultsF.toArray())   ; 

            passJ.repaint(); 
            failJ.repaint(); 


        }//StatusCodeTest


    }
}
任何指导都将不胜感激

  • 似乎在
    Web
    类和
    GUI
    类中有不同的
    passJ
    /
    failJ
    实例
  • passJ.removeAll();failJ.removeAll()
    不清除该方法中的
    JList
  • 下面是向
    JList
    添加/清除项目的简单示例:

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.DefaultListModel;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    
    public class TestFrame extends JFrame {
    
        private JList<Integer> normal;
        private JList<Integer> fail;
        private Integer[] vals;
    
        public TestFrame() {
            init();
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setLocationRelativeTo(null);
            setVisible(true);
        }
    
        private void init() {
            normal = new JList<Integer>(new DefaultListModel<Integer>());
            fail = new JList<Integer>(new DefaultListModel<Integer>());
    
            vals = new Integer[]{1,2,3,4,5,6,7,8,9,33};
            JButton add = new JButton("collect data");
            add.addActionListener(getCollectListener());
            JButton clear = new JButton("clear data");
            clear.addActionListener(getClearListener());
    
            JPanel p = new JPanel();
            p.add(new JScrollPane(normal));
            p.add(new JScrollPane(fail));
    
            JPanel btnPanel = new JPanel();
            btnPanel.add(add);
            btnPanel.add(clear);
            add(p);
            add(btnPanel,BorderLayout.SOUTH);
        }
    
        private ActionListener getClearListener() {
            return new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    ((DefaultListModel<Integer>)normal.getModel()).removeAllElements();
                    ((DefaultListModel<Integer>)fail.getModel()).removeAllElements();
                }
            };
        }
    
        private ActionListener getCollectListener() {
            return new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    for(Integer i : vals){
                        if(i%3==0){
                            ((DefaultListModel<Integer>)normal.getModel()).addElement(i);
                        } else {
                            ((DefaultListModel<Integer>)fail.getModel()).addElement(i);
                        }
                    }
                }
            };
        }
    
        public static void main(String args[]) {
            new TestFrame();
        }
    
    }
    
    导入java.awt.BorderLayout;
    导入java.awt.event.ActionEvent;
    导入java.awt.event.ActionListener;
    导入javax.swing.DefaultListModel;
    导入javax.swing.JButton;
    导入javax.swing.JFrame;
    导入javax.swing.JList;
    导入javax.swing.JPanel;
    导入javax.swing.JScrollPane;
    公共类TestFrame扩展了JFrame{
    私人诊所正常;
    私营企业失败;
    专用整数[]VAL;
    公共测试框架(){
    init();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    包装();
    setLocationRelativeTo(空);
    setVisible(真);
    }
    私有void init(){
    normal=新的JList(新的DefaultListModel());
    fail=new JList(new DefaultListModel());
    VAL=新整数[]{1,2,3,4,5,6,7,8,9,33};
    JButton add=新JButton(“收集数据”);
    add.addActionListener(getCollectListener());
    JButton clear=新JButton(“清除数据”);
    clear.addActionListener(getClearListener());
    JPanel p=新的JPanel();
    p、 添加(新的JScrollPane(普通));
    p、 添加(新的JScrollPane(失败));
    JPanel btnPanel=新的JPanel();
    btnPanel.add(add);
    btnPanel.add(清除);
    加(p);
    添加(btnPanel,BorderLayout.SOUTH);
    }
    私有ActionListener getClearListener(){
    返回新的ActionListener(){
    @凌驾
    已执行的公共无效操作(操作事件e){
    ((DefaultListModel)normal.getModel()).removeAllElements();
    ((DefaultListModel)fail.getModel()).removeAllElements();
    }
    };
    }
    私有ActionListener getCollectListener(){
    返回新的ActionListener(){
    @凌驾
    已执行的公共无效操作(操作事件e){
    用于(整数i:VAL){
    如果(i%3==0){
    ((DefaultListModel)normal.getModel()).addElement(i);
    }否则{
    ((DefaultListModel)fail.getModel()).addElement(i);
    }
    }
    }
    };
    }
    公共静态void main(字符串参数[]){
    新的TestFrame();
    }
    }
    
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.DefaultListModel;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    
    public class TestFrame extends JFrame {
    
        private JList<Integer> normal;
        private JList<Integer> fail;
        private Integer[] vals;
    
        public TestFrame() {
            init();
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setLocationRelativeTo(null);
            setVisible(true);
        }
    
        private void init() {
            normal = new JList<Integer>(new DefaultListModel<Integer>());
            fail = new JList<Integer>(new DefaultListModel<Integer>());
    
            vals = new Integer[]{1,2,3,4,5,6,7,8,9,33};
            JButton add = new JButton("collect data");
            add.addActionListener(getCollectListener());
            JButton clear = new JButton("clear data");
            clear.addActionListener(getClearListener());
    
            JPanel p = new JPanel();
            p.add(new JScrollPane(normal));
            p.add(new JScrollPane(fail));
    
            JPanel btnPanel = new JPanel();
            btnPanel.add(add);
            btnPanel.add(clear);
            add(p);
            add(btnPanel,BorderLayout.SOUTH);
        }
    
        private ActionListener getClearListener() {
            return new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    ((DefaultListModel<Integer>)normal.getModel()).removeAllElements();
                    ((DefaultListModel<Integer>)fail.getModel()).removeAllElements();
                }
            };
        }
    
        private ActionListener getCollectListener() {
            return new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    for(Integer i : vals){
                        if(i%3==0){
                            ((DefaultListModel<Integer>)normal.getModel()).addElement(i);
                        } else {
                            ((DefaultListModel<Integer>)fail.getModel()).addElement(i);
                        }
                    }
                }
            };
        }
    
        public static void main(String args[]) {
            new TestFrame();
        }
    
    }