Я новичок в Java и пытаюсь создать графический интерфейс, который действует точно так же, как в командном окне MatLAB.Введите конкретную строку в консоль вместо целого JTextArea
Я пытаюсь получить строку, которая в настоящее время вводится в JTextArea, отправленную на консоль, а не весь JTextArea. В моей нынешней стратегии используется каретщик и клавишник. На данный момент я использую ответ «matlab» как ответ заполнителя, который должен быть строкой под линией, когда я нажал enter.
Вот мой код:
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
}
}
Вся помощь очень высоко ценится. Приветствия
Когда вы говорите консоли, вы имеете в виду StD вне дома? Кроме того, не хотите ли вы разделить текстовую область на две части? Один для вывода, один для ввода пользователем? – thatidiotguy
Да, я имею в виду std out; Я думаю так. Я не хочу разделять эти два из-за требований моего проекта - я пытаюсь имитировать окно MATLAB-commmand, которое не разделяет их. –
Почему бы не использовать простой 'JTextField', к тому же KeyListerners - это путь к низкому уровню для Swing ..., не рекомендуется использовать их :-) –