Member 13019718 Ответов: 0

Как отобразить ввод пользователей в консоль(попытка построить консоль)


Привет, я пытаюсь создать консоль ( например, Windows cmd).Я думаю, что сделал все правильно с графическим интерфейсом, но я не могу переносить ввод пользователей на консоль.Я имею в виду, если пользователь набирает hello и enter console, он должен его отображать.Есть 2 класса: один-основной, другой-консольный.

import javax.swing.*;
    import javax.swing.text.StyledDocument;

    public class ana extends JFrame {
    
    	public JFrame frame;
    	public JTextPane console;
    	public  JTextField input;
    	public JScrollPane scrollpane;
    	public boolean trace= false;
    	public StyledDocument document;

    	public static void main(String[] args) {
            konsol k = new konsol();
            k.konsolum();
    	}
    }

Это консольный класс:

import java.awt.*;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.JTextPane;
    import javax.swing.UIManager;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyledDocument;

    public class konsol   {
    	public JFrame frame;
    	public JTextPane console;
    	public  JTextField input;
    	public JScrollPane scrollpane;
    	public boolean trace= false;
    	public StyledDocument document;
        public void konsolum() {
    		try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    		} catch(Exception e) {}

    		frame = new JFrame();
    		frame.setTitle("Konsol");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    		console = new JTextPane();
    		input = new JTextField();
    		scrollpane = new JScrollPane();
    		
    		frame.add(input,BorderLayout.SOUTH);
    		frame.add(scrollpane,BorderLayout.CENTER );
    		frame.setSize(660,350);
    		frame.setLocationRelativeTo(null);
    		frame.setResizable(false);
    		frame.setVisible(true);
    		frame.getContentPane().setBackground(new Color(50,50,50));

    		console.setEditable(false);
    		console.setFont(new Font("Courier New",Font.PLAIN,12));
    		console.setOpaque(false);
    		document = console.getStyledDocument();

    		scrollpane.getViewport().setOpaque(false);
    		scrollpane.setOpaque(false);
    		scrollpane.setBorder(null);

    		input.setEditable(true);
    		input.setCaretColor(Color.WHITE);
    		input.setForeground(Color.WHITE);
    		input.setOpaque(false);
    		input.setFont(new Font("Courier New",Font.PLAIN,12));
    		input.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				String text=input.getText();
                }
            });

    		input.addKeyListener(new KeyListener(){
    			public void keyPressed(KeyEvent e) {
    			}
    			
    			public void keyReleased(KeyEvent e) {
    			}
    			
    			public void keyTyped(KeyEvent e) {
    			}
    		});
    	}
    }

Я действительно не знаю, что написать внутри событий actionperformed`. Моя главная цель-создать консоль, которая будет понимать команды и делать с ними разные вещи. Спасибо

Что я уже пробовал:

добавление console. setText(текст);
к действию выполненному но не работающему

[no name]

http://www.cs.carleton.edu/faculty/dmusican/cs117s03/iocheat.html

Richard MacCutchan

Вам просто нужно добавить cod, чтобы захватить клавишу Enter в текстовом поле. Как только у вас это есть, вы обрабатываете контент так, как вам нужно. Какая часть вышеприведенного кода не работает?

0 Ответов