在选项卡式窗口中显示输出

2024-02-13

我用 Java 为 Linux 开发了一个任务管理器。目前的输出显示在控制台中,而选项卡式窗口单独出现(这是使用 Java Swing 完成的)。 现在我希望控制台的输出显示在选项卡式窗口中。

我该怎么做?

有一些我用过的课程。一个用于任务管理器功能,另一个用于 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();
            }
        });
    }
}

这是一个非常幼稚的实现。

package test.t100.t001;

import java.awt.*;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;

import javax.swing.*;

public class TabbedPaneDemo extends JPanel {

    private static final long serialVersionUID = 1L;
    Integer i;

    JTextArea output = new JTextArea();

    public static void main(String args[]) 
    {
        SwingUtilities.invokeLater(new Runnable() {
            public void run()
            {
                JFrame frame = new JFrame("TabbedPaneDemo");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TabbedPaneDemo(), BorderLayout.CENTER);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }

    private String getDetails() throws IOException {
        //fn();
        String line;
        String result = "";
        PrintStream p;
        Process p1 = Runtime.getRuntime().exec("tasklist.exe");
        // read from a process
        BufferedReader input = new BufferedReader(
                new InputStreamReader(p1.getInputStream()));
        while ((line = input.readLine()) != null)
        {
            //System.out.println(line);
            output.append(line + "\n");
            result += line+"\n";
            //p.println (line);
            //textarea.setVisible(true);    
        }
        //msgBox(result);
        //p.close();
        input.close();   

        return result;
    }

    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");
        // add it to something!
        panel1.add(new JScrollPane(output));
        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);

        try {
            String s = getDetails();
            output.setText(s);
        } catch(IOException e) {
            e.printStackTrace();
        }
    }


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


    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;
        }
    }
}

其他注意事项:

  1. 为了更快地获得更好的帮助,请发布SSCCE http://sscce.org/。特别是不要包含不必要的图像。
  2. Use a JTable对于这种类型的数据。
  3. 该代码将文本区域转储到一个选项卡式窗格中,该窗格显然有一个GridLayout - BNI
  4. 没有充分的理由,不要混合使用 Swing 和 AWT 组件。
  5. 正如已经提到的,使用SwingWorker用于获取数据。

Update

..但是控制台的输出没有出现。

嗯。我们想一下

我开发了一个任务管理器Linux in Java

..结合..

Process p1 = Runtime.getRuntime().exec("tasklist.exe");

现在,如果我误解了什么,请纠正我,但是 AFIAULinux 没有 EXE。

我猜代码在 Linux 上失败了,因为err进程的流被忽略,你没有被告知原因。这是上面显示的代码的屏幕截图,它出现在Windows 7.

现在,如果数据已被硬编码,您可能会看到类似上面的内容。这回答了“(如何)在选项卡式窗口中显示输出”的问题,对吧?

更多信息。于new您所看到的问题是通过实施以下所有建议来解决的当 Runtime.exec() 不会时 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html。如果您实施了所有建议但仍然无法解决问题,我建议您提出一个新问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在选项卡式窗口中显示输出 的相关文章

随机推荐

  • UITableViewCell Objective C 代码上的 3D Touch Peek 和 Pop。 (用力触摸)

    我需要启用Peek And Pop上的功能UITableViewCell在 Objective C 中通过使用 Force Touch 并且还需要在预览视图下显示一些操作 例如默认邮件应用程序 我是 iOS 新手 请帮助我实现这一目标 使用
  • Python 中的哈希集和哈希表

    有没有HashSetPython 中的实现 我知道哈希表可以用字典来表示 但是我们如何表示HashSet执行 我不是在寻找具有相同方法的数据结构HashSets而是具有恒定查找时间或 O 1 量级的人 另外 我想知道Python中的查找时间
  • Java 9 之后加载类和资源

    我正在读书InfoQ 上的这篇文章 https www infoq com news 2017 06 oracle defends jpms引用莱因霍尔德的话 开发人员仍然可以使用 Java 9 中的 Java 类路径来实现 Java 运行
  • 如何实现基于 Cocoa 的 Adob​​e Photoshop 插件

    Cocoa 曾经在 CS3 上工作过将 Cocoa 包放入主 Carbon 插件包中的技巧 http furbo org 2008 07 08 plug ins the cocoa way 从 Carbon 加载它并发出 NSApplica
  • Angular 9 Universal ReferenceError:窗口未定义

    我正在尝试使用一些第三方库在 Angular 9 项目中设置 SSR 但没有成功 下面的错误 ReferenceError window is not defined at node modules intl tel input build
  • SQL Server 表有 100k 条记录,2 个内连接速度极慢

    我正在将数据从 SQL Server 迁移到 Postgres 我正在更改我的表结构以处理一般的体育比赛 但这给我带来了性能问题 我有以下表格 matches id 开始时间 比赛队伍 id match id team id 分数 比赛选手
  • .htm 或 .html 扩展名 - 哪一个是正确的,有什么不同?

    当我保存扩展名为 htm 或 html 的文件时 哪个是正确的 有什么不同 两者都没有错 只是偏好问题 传统上 MS 软件使用htm默认情况下 nix 更喜欢html 正如下面所指出的 htm 传统是从 win 3 xx 延续下来的 其中文
  • z-index css弹出框和ie7

    我有一些 div 框 当悬停时应该显示一个语音框 有了 jQuery 和 CSS 一切都不是太难 然而 弹出语音出现在 IE7 中的相邻 div 下 我无法使其出现在其下方 参见截图 我尝试在不同的地方使用 z index 但没有成功 FF
  • 在使用库方面,C/C++/Objective-C 与 C# 相比如何?

    这个问题是基于之前的一个问题 C 编译如何避免需要头文件 https stackoverflow com questions 1917935 how does c compilation get around needing header
  • SSIS 2012 和 SAP HANA

    有谁知道是否可以使用 SSIS 2012 将数据导入 或导出 SAP HANA 我在网上查了一下 似乎找不到太多关于两人合作的信息 我知道 SAP Data Services 是 HANA 推荐的 ETL 工具 但如果可能的话 我们希望尝试
  • 设置 jupyter 笔记本主题后工具栏不可见

    当我从笔记本调用并加载主题时 工具栏和笔记本名称不显示 我可以使用代码从笔记本加载主题 但我不确定如何使用类似的开关 T and N用于调用工具栏和笔记本名称 我在代码单元中使用了以下内容 from jupyterthemes import
  • 从内部作用域访问外部作用域

    我有一个看起来有点像这样的类型 var x function this y function this z function this A function CALLING POINT 从调用点 我尝试调用函数 this y 我不需要传递任
  • Node JS 读取缓冲数据

    由于某种原因 当我向端口发送消息并尝试通过缓冲区读取它时 它总是挂起socket on end 似乎永远无法达到 有任何想法吗 var net require net var buffer var server net createServ
  • Android监听应用程序中的所有事件

    我想监听手机上的所有用户事件 例如onTouch onClick onMenuItemClickedETC 为此 我创建了一个扩展活动的超级类 所有活动都从该类扩展 public class TopActivity extends Acti
  • 如何删除 MongoDB 中的 _id 并替换为另一个字段作为主键?

    我收藏了大量文件 我想从所有文档中删除自动生成的对象 ID id 键 并将其替换为另一个字段作为主键 我不明白为什么首先需要一个默认的对象 ID 在 mongodb 中 每个文档必须是唯一的 因此您需要一个唯一的字段来用作 id 如果您不提
  • 在原型中,如何将地图定义为自定义选项

    在我的原型文件中 我想将地图定义为自定义选项 尝试了一些方法 但没有一个起作用 我的元数据原型文件 syntax proto2 import google protobuf descriptor proto package com util
  • Android 中的滚动与 WebView 完美配合

    我有一个布局 我正在通过 WebView 在其中渲染 HTML 文档 XML 布局是
  • 如何重命名 ASP.NET 5 Web 项目中用作 Web 根目录的“wwwroot”文件夹

    我想将 ASP NET 5 项目中的 Web 根文件夹重命名为wwwroot 当我手动重命名该文件夹时 项目不再将其识别为 Web 根文件夹 项目属性页面不允许修改 Web 根目录 有没有办法重命名和 或重新分配 ASP NET 5 Web
  • 在 CSS 网格中从底部开始填充单元格

    我有一个 3 行的 CSS 网格 可能要填的项目还不到3个 我想从底部开始填 我创建了一个jsFiddle https jsfiddle net Lexogram vd7g4x5e 8 供你玩 但目前它无法达到我想要的效果 html bod
  • 在选项卡式窗口中显示输出

    我用 Java 为 Linux 开发了一个任务管理器 目前的输出显示在控制台中 而选项卡式窗口单独出现 这是使用 Java Swing 完成的 现在我希望控制台的输出显示在选项卡式窗口中 我该怎么做 有一些我用过的课程 一个用于任务管理器功