私は Java が初めてで、MatLAB のコマンド ウィンドウとまったく同じように動作する GUI を作成しようとしています。
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
}
}
すべてのヘルプは非常に高く評価されています。乾杯