2014-02-23 121 views
0

我在java中做了一個簡單的JFrame。但是我也想在打開真正的.jar文件的同時打開開發者控制檯。第8行是我要在控制檯窗口中輸出的文本,該文本應該從JFrame開始。Java控制檯獨立?

代碼:

import javax.swing.JFrame; 

public class Launcher extends JFrame { 
    private static final long serialVersionUID = 1L; 

    public static void main(String[] args) { 
     new Launcher().setVisible(true); 
     System.out.println("Started Launcher..."); 
    } 
    private Launcher() { 
     super("DevCity13 - Launcher (Alpha)"); 
     setSize(600, 600); 
     setResizable(false); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 
} 

回答

4

你總是可以顯示自己的控制檯,其輸出的任何寫入到System.out的內容:

enter image description here

import java.awt.Color; 
import java.awt.Font; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.PrintStream; 

import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import javax.swing.SwingUtilities; 

public class Launcher extends JFrame { 
    private static final long serialVersionUID = 1L; 

    private static class Console { 
     private final JFrame frame; 

     public Console() { 
      frame = new JFrame(); 
      final JTextArea textArea = new JTextArea(24, 80); 
      textArea.setBackground(Color.BLACK); 
      textArea.setForeground(Color.LIGHT_GRAY); 
      textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12)); 
      System.setOut(new PrintStream(new OutputStream() { 

       @Override 
       public void write(int b) throws IOException { 
        textArea.append(String.valueOf((char) b)); 
       } 
      })); 
      frame.add(textArea); 
     } 

     public void init() { 
      frame.pack(); 
      frame.setVisible(true); 
     } 

     public JFrame getFrame() { 
      return frame; 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       Console console = new Console(); 
       console.init(); 
       Launcher launcher = new Launcher(); 
       launcher.setVisible(true); 
       console.getFrame().setLocation(
         launcher.getX() + launcher.getWidth() 
           + launcher.getInsets().right, launcher.getY()); 
       System.out.println("Started Launcher..."); 
      } 
     }); 
    } 

    private Launcher() { 
     super("DevCity13 - Launcher (Alpha)"); 
     setSize(600, 600); 
     setResizable(false); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 
} 
+0

是的,這是有點準確!我唯一想知道的是,如果有一種方法可以給控制檯一個標題,如果你知道的話?感謝代碼人btw! :) –

+0

@valrossen_Oliver只需在控制檯的框架上調用'setTitle(「Some title」)''。 –

0

你只需要在運行一個.jar啓用Java控制檯。爲此,請按照官方文檔here上的步驟操作。它可能會根據您的操作系統而有所變化,但這是主意。

+0

這是不太我所需要的東西,你看......我希望打開.Jar文件的最終用戶可以獲得一個控制檯(如Windows cmd),並在其中打印第8行的文本...... IS有辦法嗎? –

+1

如果你不願意實現你自己的控制檯,我沒有看到另一種方式。您可以使用「JTextField」創建另一個「JFrame」並顯示控制檯消息。在這種情況下,您必須將'System.out'更改爲其他內容,以便將這些消息存儲並顯示在新的'JFrame'上。 – Trein