簡體   English   中英

在循環中創建 JLabel 和 actionlistener 的新實例

[英]Create new instance of JLabel and actionlistener in loop

我正在嘗試為我的班級項目創建一個應用程序啟動器。

我正在嘗試實現一個函數,該函數將從文本文件中獲取每一行並將其放入JLabel並在每次循環運行時添加一個ActionListener 在循環結束時,它確實顯示了所有JLabels但是每當我單擊任何一個時,它都會打開文件中最后一個程序。

我的問題是如何才能點擊程序名稱並打開正確的文件?

這是我做的代碼:

public static void list()
{
    String file = "files/programList.txt";

    //final Scanner read = new Scanner(file);
    String filePath;
    String content;
    String line = "";
    content = "<html>";
    int count = 0, i = 0, y = 0;
    int x = 0;
    lines = 0;
    try
    {
        FileReader read = new FileReader(file);
        LineNumberReader lRead = new LineNumberReader(
                          new FileReader(new File("files/programList.txt")));
        lRead.skip(Long.MAX_VALUE);
        BufferedReader bRead = new BufferedReader(read);
        int numbOfLines = lRead.getLineNumber() + 1;
        System.out.println(numbOfLines);
        fixedLine = new ArrayList<String>(lRead.getLineNumber());
        while((line = bRead.readLine()) != null)
        {
            int index = -1;

            if(lines != numbOfLines)
            {
                if(lines == 0)
                {
                    fixedLine.add(line);
                    lines = 1;
                }
                else
                {
                    fixedLine.set(lines++, line);
                    //fixedLine = line;
                    //pLine = new JLabel(fixedLine);
                    //pLine.setFont(new Font("Verdana", 1, 20));
                    //pLine.setForeground(Color.WHITE);
                    //pLine.addMouseListener(new MouseAdapter()
                    //{
                    // public void mouseClicked(MouseEvent e)
                    //{
                    //  fileList.run(pLine.getText());
                    // System.out.println(pLine.getText());
                    //}
                    //});
                    //panel.add(pLine);
                    //frame.repaint();
                    //frame.revalidate();
                    content = content + line + "<br>";
                    System.out.println(lines);

                    System.out.println(fixedLine);
                }
            }
            else
            {
                lines++;
            }
        }
        bRead.close();
        lRead.close();
        content = content + "</html>";
        System.out.println(fixedLine.get(0));

        System.out.println(numbOfLines);//maybe use array or arraylist
    }
    catch(IOException e)
    {
        System.err.println(e.getMessage());
    }

}

我正在試驗一個字符串數組列表,但在它給我一個錯誤之前只讓它添加了一個程序。

我該怎么做才能讓它工作?

在我使程序運行后,我將簡化我的代碼並改進它,因為我知道我的編碼不是最好的

因此,您希望在單擊 JLabel 時執行某些操作,即從文件中讀取的內容。 我認為你在閱讀台詞時會做出奇怪的事情。 為什么有這么多名單? 你可以做類似的事情

Files.lines(Paths.get("files", "programList.txt")).forEach(
            f -> {
                JLabel label = new JLabel(f);
                label.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        executeopeningMagicWithTheFile(f);
                    }
                });
                panel.add(label);
            }
    );

我希望這會有所幫助,因為您的代碼包含注釋中的代碼和未定義的變量,所以目前還不清楚您到底想要什么

暫無
暫無

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

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