当前位置: 首页 > 知识库问答 >
问题:

在控制台中输入特定行而不是整个JTextArea

乐正宜人
2023-03-14
public class MatlabGui extends JPanel implements KeyListener {

    protected JTextArea myTextArea;;

    public MatlabGui() {
        super(new GridBagLayout());

        myTextArea = new JTextArea(50, 75);
        myTextArea.setEditable(true);
        JScrollPane myScrollPane = new JScrollPane(myTextArea);

        GridBagConstraints myCons = new GridBagConstraints();
        myCons.gridwidth = GridBagConstraints.REMAINDER;

        myCons.fill = GridBagConstraints.BOTH;
        myCons.weightx = 1;
        myCons.weighty = 1;
        add(myScrollPane, myCons);

        myTextArea.addKeyListener(this);

    }

    private static void createAndShowGUI() {
        JFrame frame = new JFrame("Matlab");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new MatlabGui());
        frame.pack();
        frame.setVisible(true);

    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

@Override
public void keyPressed(KeyEvent evt) {
    // TODO Auto-generated method stub
    if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
        try {
            myTextArea.addCaretListener(CaretListener);
            int caretpos = myTextArea.getCaretPosition();
            int start = 0;
            int end = 0;

            start = myTextArea.getLineStartOffset(caretpos);
            end = myTextArea.getLineEndOffset(caretpos);

            System.out.println(myTextArea.getText(start, end));

        } catch (BadLocationException ex) {
            System.out.println(ex.getMessage());
        }
        myTextArea.append("\n" + ">>>" + " " + "matlab's response");
                }

}    
    public String getString() {
        return myTextArea.getText();
    }


    @Override
    public void keyReleased(KeyEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void keyTyped(KeyEvent arg0) {
        // TODO Auto-generated method stub
    }

}

共有1个答案

百里修真
2023-03-14

对于您的另一个问题:

您的条件if(evt.getkeycode()==keyevent.vk_enter)mytextarea.append(“\n”+“>>>”+“+”matlab的响应“)之前结束;所以当按下某个键时,总是调用mytestarea.append。

你应该做:

 if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
        try {
            // Hint
            // offset=myTextArea.getLineOfOffset(myTextArea.getCaretPosition());
            int start = 0;
            int end = 0;
            start = myTextArea.getLineStartOffset(start);
            end = myTextArea.getLineEndOffset(end);

            System.out.println(myTextArea.getText(start, end));

        } catch (BadLocationException ex) {
            System.out.println(ex.getMessage());
        }

        String text = myTextArea.getText();
        System.out.println(text);

        myTextArea.append("\n" + ">>>" + " " + "matlab's response");
    }
 类似资料:
  • 我有一些多行文字作为控制台输入。诸如此类: 行数可能每次都不同(一、二、三、四等,但不是零),但这个文本总是在瞬间用行分隔符(一个粘贴,而不是按回车键输入几个)输入。这个Java应用程序必须立即开始对这些行做些什么,但出于某种原因,我不明白如何做出这种行为。我的意思是,它必须将所有这些行保存到,或,或

  • 问题内容: 通过控制台进行任何输入的数据类型(如我使用BufferedReader类所做的那样)为String。之后,我们将其类型转换为需要查询的数据类型(如Inter.parseInt()为整数)。但是在C语言中,我们可以接受任何输入原始数据类型,而在Java中,所有输入类型都是Neccerily String。为什么是这样? 问题答案: 控制台输入实际上以一系列字节而不是字符串的形式读入。这是

  • 由于某种原因,当我输出到一个文本框时,它会写[Object Object] 下面是我的代码,虽然它是一个数组。 这不是一个重复的问题,因为在console.log中,它显示了所有已刮取数据的数组,但当将该数据放入文本框中时,它只显示[Object Object] 在texbox中,它只输出[Object Object],不知道从这里做什么。

  • 问题内容: 我意识到在SO上也有类似的问题,但是它们并不能完全解决我的问题。 我想要一个给定Class对象的方法,该方法将在该Class(如果存在)上调用“ main”方法,即public static void main,并捕获该main方法的控制台输出。进行调用的类是非守护线程。 我已经有部分代码了,但是我不确定如何捕获控制台输出,最重要的是,如何仅捕获此特定线程的输出。这是我到目前为止的内容

  • 问题内容: 我通过Stata学习了数据操纵和分析,并使用log命令记录了所有写入的命令和生成的输出。这样做可以重现我的发现,检查以前的结果并与其他人共享pdf或txt。在Python中使用什么?如果我使用Python Jupyter Notebook或Spyder有区别吗? 问题答案: 执行所需操作的方法是使用命令,如下所述: 记录IPython输出?

  • 我正在使用JSch库编写一个程序,必须打开一个通道,执行中存储的几个命令 我需要从字符串变量而不是控制台输入命令 我遇到了一个帖子Jsch:Command Output unavailable 在给定的代码中,它对于、等命令来说运行良好,但当我尝试执行时,它会遇到问题 以下是代码: