저는 Java를 처음 사용하고 MatLAB의 명령 창과 똑같은 역할을하는 GUI를 만들려고합니다.전체 JTextArea가 아닌 콘솔에 특정 행을 입력하십시오.
전체 JTextArea 대신 콘솔에 보내진 JTextArea에 현재 입력중인 줄을 표시하려고합니다. 나의 현재 전략은 caretlistener와 keylistener를 사용하고있다. 지금은 자리 표시 자 응답으로 "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 의미? 또한 텍스트 영역을 2 개로 분리하지 않으시겠습니까? 하나는 출력용이고 다른 하나는 사용자 입력 용입니까? – thatidiotguy
예. std out을 의미합니다. 나도 그렇게 생각해. 내 프로젝트의 요구 사항 때문에 두 가지를 분리하고 싶지는 않습니다. 두 가지를 구분하지 않는 MATLAB COMMMAND 창을 모방하려고합니다. –
간단한 'JTextField'를 사용하지 않는 이유는 무엇입니까? 또한 KeyListerners는 Swing의 낮은 레벨입니다. 사용하기에 좋은 아이디어는 아닙니다 :-) –