gpt4 book ai didi

java - JTextArea 作为控制台

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:06 26 4
gpt4 key购买 nike

我在下面发布了两段代码。两种代码都可以单独使用。现在,当我运行文件 Easy 并单击“开始”按钮时,我希望实现类 AddNumber。我的意思是说,除了在控制台上运行 AddNumber,有什么方法可以让 AddNumber 在单击“开始”按钮后在第一个类中创建的 JTextArea 中运行?我想也许是通过 Action 监听器?(我们在按钮的情况下所做的方式)但我不确定。有没有其他方法可以让我的 JTextArea 充当其他 .java 文件的控制台?

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class Easy extends JFrame{

JTextArea text=new JTextArea();
JPanel panel=new JPanel(new GridLayout(2,2));

JButton button1 =new JButton("Start");

public Easy(){

panel.add(text);

panel.add(button1);
add(panel,BorderLayout.CENTER);

button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
//add code to call the other class and make the JTextArea act as a console
}
});
}

public static void main(String arg[]){
Easy frame=new Easy();
frame.setSize(300,100);
frame.setVisible(true);
}
}

第二类:

import java.util.Scanner;

class AddNumber
{
public static void main(String args[])
{
int x, y, z;
System.out.println("Enter two numbers to be added ");
Scanner in = new Scanner(System.in);
x = in.nextInt();
y = in.nextInt();
z = x + y;
System.out.println("Sum of entered numbers = "+z);
}
}

我看到一些帖子谈论 PrintStream.. 但我认为这不适用于此处。请帮帮我。谢谢:)

更新:好吧,我找到了这个链接:http://www.codeproject.com/Articles/328417/Java-Console-apps-made-easy#HowtousethisJavaConsole1它的工作原理是它显示“输入两个要相加的数字”......但是用户可以在哪里提供他的输入?

编辑:我只需要在我的类的主要方法中引用控制台......它工作......好吧,不完全像我希望的那样......但部分......输入仍然必须从 IDE 的终端..

最佳答案

如果您在 Google 上搜索:“stdout JTextArea”,您将找到几个链接来解决您的问题。

在最后一个链接中,buddybob 扩展了 java.io.OutputStream 以将标准输出打印到他的 JTextArea。我在下面包含了他的解决方案。

TextAreaOutputStream.java

/*
*
* @(#) TextAreaOutputStream.java
*
*/

import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JTextArea;

/**
* An output stream that writes its output to a javax.swing.JTextArea
* control.
*
* @author Ranganath Kini
* @see javax.swing.JTextArea
*/
public class TextAreaOutputStream extends OutputStream {
private JTextArea textControl;

/**
* Creates a new instance of TextAreaOutputStream which writes
* to the specified instance of javax.swing.JTextArea control.
*
* @param control A reference to the javax.swing.JTextArea
* control to which the output must be redirected
* to.
*/
public TextAreaOutputStream( JTextArea control ) {
textControl = control;
}

/**
* Writes the specified byte as a character to the
* javax.swing.JTextArea.
*
* @param b The byte to be written as character to the
* JTextArea.
*/
public void write( int b ) throws IOException {
// append the data as characters to the JTextArea control
textControl.append( String.valueOf( ( char )b ) );
}
}

The TextAreaOutputStream extends the java.io.OutputStream class and overrides its write(int) method overload, this class uses a reference to a javax.swing.JTextArea control instance and then appends output to it whenever its write( int b ) method is called.

To use the TextAreaOutputStream class, [yo]u should use:

用法

// Create an instance of javax.swing.JTextArea control
JTextArea txtConsole = new JTextArea();

// Now create a new TextAreaOutputStream to write to our JTextArea control and wrap a
// PrintStream around it to support the println/printf methods.
PrintStream out = new PrintStream( new TextAreaOutputStream( txtConsole ) );

// redirect standard output stream to the TextAreaOutputStream
System.setOut( out );

// redirect standard error stream to the TextAreaOutputStream
System.setErr( out );

// now test the mechanism
System.out.println( "Hello World" );

关于java - JTextArea 作为控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com