2013-03-06 2 views
1

Я пытаюсь вызвать линию от BufferedReader его в другом классе я хочу, чтобы иметь возможность вывода результата в моем JTextArea, который находится в моем главном классеBufferedReader в JTextArea

Вот мой главный класс:

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 
import javax.swing.UIManager.LookAndFeelInfo; 
import java.io.*; 
import java.lang.Process.*; 

public class FTP { 
    public static void main (String []args){ 
      Runnable runner = new Runnable(){ 
       public void run() 
       { 

        LookAndFeel nimbusLook = new LookAndFeel(); 
        nimbusLook.NimbusLookAndFeel(); 

        JFrame frame = new JFrame("BNA FTP Diagnose"); 
        frame.setVisible(true); 
        frame.setResizable(false); 
        frame.setSize(540, 420); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setLocation(150, 150); 


        JMenuBar menuBar = new JMenuBar(); 
        frame.setJMenuBar(menuBar); 

        JMenu fileMenu = new JMenu("File"); 
        menuBar.add(fileMenu); 
        final JMenuItem exitMenuItem = new JMenuItem("Exit"); 
        fileMenu.add(exitMenuItem); 


        JMenu helpMenu = new JMenu("Help"); 
        menuBar.add(new JPanel()); 
        menuBar.add(helpMenu); 
        final JMenuItem aboutMenuItem = new JMenuItem("About"); 
        helpMenu.add(aboutMenuItem); 



        JPanel titlePanel = new JPanel(new BorderLayout()); 
        frame.add(titlePanel, BorderLayout.NORTH); 

        JLabel titleLabel = new JLabel("FTP Diagnose", JLabel.CENTER); 
        titleLabel.setFont(new Font(null, Font.BOLD, 14)); 
        titleLabel.setForeground(Color.BLUE); 
        titlePanel.add(titleLabel); 

        JPanel gridPanel = new JPanel(new GridLayout(1, 1)); 
        frame.add(gridPanel); 

        JPanel vendorPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
        gridPanel.add(vendorPanel); 

        final String vendor [] = {"LLesiant" ,"WK-CCH", "Proquest", "Notes", "Research Institute of America", "Thomson", 
          "BNAI PDF Processing", " TM Portfolios to Indexing", "Postscript to PRODLOGIN1", "www.firstdoor.net", "psp.bna.com", "WEST", "LexisNexis", "McArdle Printing Company", 
          "Breaking News Email", "Ex Libris", "Pandora", "Bloomberg Law", "Acquire Media Site 1", "Acquire Media Site 2", "Quicksite", "QA Quicksite"}; 
        final JComboBox vendorList = new JComboBox(vendor); 
        vendorPanel.add(vendorList); 

        JPanel diagnoseButtonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 
        gridPanel.add(diagnoseButtonPanel); 
        final JButton diagnoseButton = new JButton("Diagnose"); 
        diagnoseButtonPanel.add(diagnoseButton); 


        JPanel centerPanel = new JPanel(new BorderLayout()); 
        frame.add(centerPanel, BorderLayout.SOUTH); 
        JPanel commandPanel = new JPanel(new GridLayout(1, 0)); 
        centerPanel.add(commandPanel); 


        final JTextArea commandResultArea = new JTextArea(7, 0); 
        JScrollPane scroll = new JScrollPane(commandResultArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
        commandPanel.add(scroll); 
        commandResultArea.setEditable(false); 




        ActionListener buttonListener = new ActionListener(){ 

         public void actionPerformed(ActionEvent ae) 

         { 
          int selectedIndex = vendorList.getSelectedIndex(); 

          String llesiant = "ftp.llesiant.com"; 
          String wkCCH = "FTP1.cch.com"; 
          String proquest = "ftp.proquest.com"; 
          String notes = "notes5.bna.com"; 


          //String lineThree = null; 

          CommandClass readCommand = new CommandClass(); 

          if (selectedIndex == 0) 
          { 
           readCommand.getCommand(llesiant); 
          } 
          else if (selectedIndex == 1) 
          { 
           readCommand.getCommand(wkCCH); 
          } 
          else if (selectedIndex == 2) 
          { 
           readCommand.getCommand(proquest); 
          } 
          else if (selectedIndex == 3) 
          { 
           readCommand.getCommand(notes); 
          } 

         } 

        }; 
        diagnoseButton.addActionListener(buttonListener); 

        ActionListener exitListener = new ActionListener(){ 

         public void actionPerformed(ActionEvent el) 
         { 

          if (el.getSource()== exitMenuItem) 
          { 
           JOptionPane.showMessageDialog(null, "FTP Program will exit now!"); 
           System.exit(0); 
          } 

         } 

        }; 

        exitMenuItem.addActionListener(exitListener); 

        ActionListener aboutListener = new ActionListener() 
        { 
         public void actionPerformed(ActionEvent al) 
         { 

          if (al.getSource()== aboutMenuItem) 

          { 
          JOptionPane.showMessageDialog(null, "This Software was made for Editors to. \nDiagnose BNA Bloomberg client FTP site."); 

          } 
         } 

        }; 
        aboutMenuItem.addActionListener(aboutListener);    
        } 

      }; 
      EventQueue.invokeLater(runner); 

     } 

} 

Вот мой CommandClass:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import javax.swing.JOptionPane; 


public class CommandClass { 




    public String line; 



    public void getCommand(String ftpSite) 

    { 


     String command = "ping "; 


     try 
     { 
     Process p = Runtime.getRuntime().exec(command +ftpSite); 

     BufferedReader readOutput = new BufferedReader(new InputStreamReader (p.getInputStream())); 


     JOptionPane.showMessageDialog(null, "FTP is connected"); 

     while ((line = readOutput.readLine()) != null) 
     { 

       System.out.println(line); 

     } 
     readOutput.close(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 

     } 

    } 





} 

Вот мой взгляд и чувствовать себя класс:

import javax.swing.UIManager; 
import javax.swing.UIManager.LookAndFeelInfo; 

public class LookAndFeel { 


    public void NimbusLookAndFeel() 
    { 

     try { 
      for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (Exception e) { 
      // If Nimbus is not available, you can set the GUI to another look and feel. 
     } 


    } 




} 

То, что я пытаюсь сделать: Выходные печатает отлично в консоли, но я хочу быть в состоянии напечатать его в JTextArea в классе почты и я попробовал вернуть значение строки строки, но, похоже, возвращается с нулевым значением. Если то, что я пытаюсь сделать, невозможно. Есть ли способ, к Даю JTextArea.setText к (commandCLass)

+0

Для лучшей помощи раньше, опубликовать [SSCCE] (http://sscce.org/). –

ответ

0

улучшить свой метод getCommand, как это вернуть правильную String и использовать это возвращаемое значение в главном классе, чтобы отобразить в JTextArea

public String getCommand(String ftpSite){ 
    String command = "ping "; 
    StringBuffer output = new StringBuffer(); 
    try{ 
     Process p = Runtime.getRuntime().exec(command +ftpSite); 
     //BufferedReader readOutput = new BufferedReader(new InputStreamReader (p.getInputStream())); 
     InputStreamReader ir = new InputStreamReader (p.getInputStream()); 
     int outputChar = 0; 
     while((outputChar = ir.read()) != -1){ 
      output.append((char)outputChar); 
     if(!ir.ready()){ // If the next read is not guarenteed, come out of loop. 
      break; 
     } 
      } 
      ir.close(); 
     JOptionPane.showMessageDialog(null, "FTP is connected"); 
     //while ((line = readOutput.readLine()) != null){ 
       //System.out.println(line); 
       //output.append(line).append("\n"); 
     //} 
     //readOutput.close(); 
    }catch (IOException e){ 
     e.printStackTrace(); 
    } 
    return output.toString(); 
} 

если-иначе блок в FTP класса

   CommandClass readCommand = new CommandClass(); 

         if (selectedIndex == 0) 
         { 
          commandResultArea.setText(readCommand.getCommand(llesiant)); 
         } 
         else if (selectedIndex == 1) 
         { 
          commandResultArea.setText(readCommand.getCommand(wkCCH)); 
         } 
         else if (selectedIndex == 2) 
         { 
          commandResultArea.setText(readCommand.getCommand(proquest)); 
         } 
         else if (selectedIndex == 3) 
         { 
          commandResultArea.setText(readCommand.getCommand(notes)); 
         } 
+0

Не могли бы вы объяснить, почему вам нужно было присудить классу FTP, расширив его, а также почему вы должны объявить класс как строку, которая возвращает значение. и какова цель выходной строки, кажется, что она не имеет ничего в верхней части. Я бы очень оценил, что я пытаюсь изучить это. –

+0

Я не унаследовал класс «FTP». Я изменил метод 'getCommand' в' CommandClass'. В вашем классе 'FTP', лестница ** if-else ** будет изменена, как показано в моем сообщении. Обновлено мое сообщение. –

+0

также у меня есть вопрос, должен ли я изменить команду ping на ftp. Он не распечатывает никакого сообщения о том, что ftp подключен обычно, когда вы вводите ftp на cmd или unix, и сайт, на котором он говорит, что он связан, потому что у меня нет outputStream для моей команды, и если бы я хотел показать сообщение, когда подключен ftp, как это сделать или как распечатать, что обычно получает принтер, когда вы запускаете команду ftp на cmd или unix. Спасибо миллиону –

0

FTP класс:

Я сделал так, чтобы, когда вы пинговали сервер, он возвращал строку. Вы можете изменить его, чтобы активно редактировать текст в JTextField, но это отлично работает.

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 
import javax.swing.UIManager.LookAndFeelInfo; 
import java.io.*; 
import java.lang.Process.*; 

public class FTP { 



    public static void main (String []args) 
    { 
    Runnable runner = new Runnable(){ 



     public void run() 
     { 

     LookAndFeel nimbusLook = new LookAndFeel(); 
     nimbusLook.NimbusLookAndFeel(); 

     JFrame frame = new JFrame("BNA FTP Diagnose"); 
     frame.setVisible(true); 
     frame.setResizable(false); 
     frame.setSize(540, 420); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocation(150, 150); 


     JMenuBar menuBar = new JMenuBar(); 
     frame.setJMenuBar(menuBar); 

     JMenu fileMenu = new JMenu("File"); 
     menuBar.add(fileMenu); 
     final JMenuItem exitMenuItem = new JMenuItem("Exit"); 
     fileMenu.add(exitMenuItem); 


     JMenu helpMenu = new JMenu("Help"); 
     menuBar.add(new JPanel()); 
     menuBar.add(helpMenu); 
     final JMenuItem aboutMenuItem = new JMenuItem("About"); 
     helpMenu.add(aboutMenuItem); 



     JPanel titlePanel = new JPanel(new BorderLayout()); 
     frame.add(titlePanel, BorderLayout.NORTH); 

     JLabel titleLabel = new JLabel("FTP Diagnose", JLabel.CENTER); 
     titleLabel.setFont(new Font(null, Font.BOLD, 14)); 
     titleLabel.setForeground(Color.BLUE); 
     titlePanel.add(titleLabel); 

     JPanel gridPanel = new JPanel(new GridLayout(1, 1)); 
     frame.add(gridPanel); 

     JPanel vendorPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
     gridPanel.add(vendorPanel); 

     final String vendor [] = {"LLesiant" ,"WK-CCH", "Proquest", "Notes", "Research Institute of America", "Thomson", 
      "BNAI PDF Processing", " TM Portfolios to Indexing", "Postscript to PRODLOGIN1", "www.firstdoor.net", "psp.bna.com", "WEST", "LexisNexis", "McArdle Printing Company", 
      "Breaking News Email", "Ex Libris", "Pandora", "Bloomberg Law", "Acquire Media Site 1", "Acquire Media Site 2", "Quicksite", "QA Quicksite"}; 
     final JComboBox vendorList = new JComboBox(vendor); 
     vendorPanel.add(vendorList); 

     JPanel diagnoseButtonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 
     gridPanel.add(diagnoseButtonPanel); 
     final JButton diagnoseButton = new JButton("Diagnose"); 
     diagnoseButtonPanel.add(diagnoseButton); 


     JPanel centerPanel = new JPanel(new BorderLayout()); 
     frame.add(centerPanel, BorderLayout.SOUTH); 
     JPanel commandPanel = new JPanel(new GridLayout(1, 0)); 
     centerPanel.add(commandPanel); 


     final JTextArea commandResultArea = new JTextArea(7, 0); 
     JScrollPane scroll = new JScrollPane(commandResultArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
     commandPanel.add(scroll); 
     commandResultArea.setEditable(false); 




     ActionListener buttonListener = new ActionListener(){ 

      public void actionPerformed(ActionEvent ae) 

      { 
      int selectedIndex = vendorList.getSelectedIndex(); 

      String llesiant = "ftp.llesiant.com"; 
      String wkCCH = "FTP1.cch.com"; 
      String proquest = "ftp.proquest.com"; 
      String notes = "notes5.bna.com"; 


      //String lineThree = null; 

      CommandClass readCommand = new CommandClass(); 

      if (selectedIndex == 0) 
      { 
       commandResultArea.setText(readCommand.getCommand(llesiant)); //these return strings 

      } 
      else if (selectedIndex == 1) 
      { 
       commandResultArea.setText(readCommand.getCommand(wkCCH)); 
      } 
      else if (selectedIndex == 2) 
      { 
       commandResultArea.setText(readCommand.getCommand(proquest)); 
      } 
      else if (selectedIndex == 3) 
      { 
       commandResultArea.setText(readCommand.getCommand(notes)); 
      } 

      } 

     }; 
     diagnoseButton.addActionListener(buttonListener); 

     ActionListener exitListener = new ActionListener(){ 

      public void actionPerformed(ActionEvent el) 
      { 

      if (el.getSource()== exitMenuItem) 
      { 
       JOptionPane.showMessageDialog(null, "FTP Program will exit now!"); 
       System.exit(0); 
      } 

      } 

     }; 

     exitMenuItem.addActionListener(exitListener); 

     ActionListener aboutListener = new ActionListener() 
     { 
      public void actionPerformed(ActionEvent al) 
      { 

      if (al.getSource()== aboutMenuItem) 

      { 
       JOptionPane.showMessageDialog(null, "This Software was made for Editors to. \nDiagnose BNA Bloomberg client FTP site."); 

      } 
      } 

     }; 
     aboutMenuItem.addActionListener(aboutListener);    
     } 

    }; 
    EventQueue.invokeLater(runner); 

    } 

} 

Command Класс:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import javax.swing.JOptionPane; 


public class CommandClass extends FTP { 




    public String line, output = ""; 



    public String getCommand(String ftpSite) 

    { 


    String command = "ping "; 


    try 
    { 
     Process p = Runtime.getRuntime().exec(command +ftpSite); 

     BufferedReader readOutput = new BufferedReader(new InputStreamReader (p.getInputStream())); 


     JOptionPane.showMessageDialog(null, "FTP is connected"); 

     while ((line = readOutput.readLine()) != null) 
     { 

     System.out.println(line); 
     output += line + "\n"; 

     } 
     readOutput.close(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 

    } 
    return output; 
    } 





} 
+0

Не могли бы вы объяснить, почему вам нужно было присудить классу FTP, расширив его, а также почему вы должны объявить класс как строку, которая возвращает значение. и какова цель выходной строки, кажется, что она не имеет ничего в верхней части. Я бы очень оценил, что я пытаюсь это изучить. –

Смежные вопросы