Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 Swing在选项卡式窗口中显示的输出_Java_Swing - Fatal编程技术网

使用Java Swing在选项卡式窗口中显示的输出

使用Java Swing在选项卡式窗口中显示的输出,java,swing,Java,Swing,我已经用java为linux开发了一个任务管理器。到目前为止,输出显示在控制台中,而选项卡式窗口则单独显示(这是使用JavaSwing完成的)。 现在,我希望控制台的输出显示在选项卡式窗口中。我该怎么做? 我曾经使用过一些类。一个用于任务管理器功能,另一个用于GUI。我已经在下面贴了一些代码,请帮我 **TabbedPaneDemo1.java** package components; import java.io.BufferedReader; import java.io.Buffere

我已经用java为linux开发了一个任务管理器。到目前为止,输出显示在控制台中,而选项卡式窗口则单独显示(这是使用JavaSwing完成的)。 现在,我希望控制台的输出显示在选项卡式窗口中。我该怎么做? 我曾经使用过一些类。一个用于任务管理器功能,另一个用于GUI。我已经在下面贴了一些代码,请帮我

**TabbedPaneDemo1.java**

package components;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;


/*
 * TabbedPaneDemo.java requires one additional file:
 *   images/middle.gif.
 */

import javax.swing.JTabbedPane;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.TextArea;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;

public class TabbedPaneDemo1
{

public static void main(String args[]) throws Exception
{
    try
    {   
        TextArea textarea = new TextArea();
        TabbedPaneDemo obj = new TabbedPaneDemo();
        obj.fn();
        String line;
        String result = "";
        FileOutputStream out;
        //FileOutputStream out; // declare a file output object
        PrintStream p;
        Process p1 = Runtime.getRuntime().exec("tasklist.exe");
        out = new FileOutputStream("myfile.txt");//write to a file//
        p = new PrintStream( out );
        BufferedReader input = new BufferedReader(new InputStreamReader(p1.getInputStream()));//read form a file//
        while ((line = input.readLine()) != null)
        {
            System.out.println(line);
            //textarea.append(line + "\n");
            result += line+"\n";
            p.println (line);
            //textarea.setVisible(true);    
        }
        //msgBox(result);
        p.close();
        input.close();   
    }
    catch(Exception e)
    {

    }
}
    public static void msgBox(String msg) {
    javax.swing.JOptionPane.showConfirmDialog((java.awt.Component)
    null, msg, "WindowsUtils",
    javax.swing.JOptionPane.DEFAULT_OPTION);
    }
}

**TabbedPaneDemo.java**

package components;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import javax.swing.JTabbedPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.KeyEvent;

public class TabbedPaneDemo extends JPanel {
Integer i;
public TabbedPaneDemo() {
    super(new GridLayout(1, 1));

    JTabbedPane tabbedPane = new JTabbedPane();
    ImageIcon icon = createImageIcon("images");


    JComponent panel1 = makeTextPanel("tasklist");
    tabbedPane.addTab("tasks", icon, panel1,
            "ta");
    tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);

    JComponent panel2 = makeTextPanel("windows");
    tabbedPane.addTab("wins", icon, panel2,
            "wi");
    tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);


    add(tabbedPane);`enter code here`
        tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);    
    }
    protected JComponent makeTextPanel(String text)
    {
        JPanel panel = new JPanel(false);
        JLabel filler = new JLabel(text);
        filler.setHorizontalAlignment(JLabel.CENTER);
        panel.setLayout(new GridLayout(1, 1));
        panel.add(filler);
        return panel;
    }
    protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = TabbedPaneDemo.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("TabbedPaneDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new TabbedPaneDemo(), BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
    public static void fn() {
        SwingUtilities.invokeLater(new Runnable() {
            public void run()
            {
        UIManager.put("swing.boldMetal", Boolean.FALSE);
        createAndShowGUI();
            }
        });
    }
}

如果您使用swing创建了,使用内容更新它的最简单方法可能是向其中添加一个JTextArea,如下所示:

tab.add(textarea);
BufferedReader input = new BufferedReader(
    new InputStreamReader(consoleProcess.getInputStream()));

String text;

while ((text = input.readLine()) != null)
{
    textarea.append(text + "\n");
}
input.close();
然后用您希望显示的内容更新
textarea

textarea.setText(); // or append();
要通过流从控制台添加输入,请执行以下操作:

tab.add(textarea);
BufferedReader input = new BufferedReader(
    new InputStreamReader(consoleProcess.getInputStream()));

String text;

while ((text = input.readLine()) != null)
{
    textarea.append(text + "\n");
}
input.close();

Thnx。。我有两门不同的课。一个用于java(我的功能),另一个用于java摆动(用于选项卡式窗口)。我用java编写了这段代码。有一个错误:textarea.append(结果+“\n”);我把它放在正确的位置了吗?还是应该放在java类中?请帮助我更好地使用stringbuilder,然后从方法返回字符串,正如您所说,将字符串附加到gui类中的textarea。