【发布时间】:2014-10-06 16:52:12
【问题描述】:
所以我创建了一个服务器,效果很好,但是我有点卡在 GUI 上。你看,我希望它看起来像命令提示符,只有下一行是可编辑的,它不允许你删除任何其他文本。所以现在我有:
JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);
然后是框架的东西......
f.setTitle("Server");
f.setBounds(ss.width - 600, 50, 550, 350);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//added window listener so closes socket connection first
f.setAlwaysOnTop(true);
然后添加它:
f.add(sc);
jt.setBackground(Color.BLACK);
jt.setForeground(Color.WHITE);
//jt.setEditable(false);
最后,我用来输出到TextArea的方法:
public static void append(String text) {
jt.append(text);
jt.append("\n\n"+System.getProperty("user.name")+" / "+getIp()+" > ");
jt.setCaretPosition(jt.getDocument().getLength());
}
现在我需要为用户在按下回车键后在 JTextArea 中键入的内容分配一个字符串:>?
jt.addActionListener(...{
public void ActioEvent(ActionEvent e){
String text = JTextArea.getLines().getLastLine().getText().replace(System.getProperty("user.name")+" / "+getIp()+" > ", "");
}
});
也许是这样的? 然后我需要它,以便只有“>”之后的部分是可编辑的?
【问题讨论】:
-
在 JTextArea 下面使用一个 JTextField。
-
但是,虽然这更容易,但这并不是我想要的真的
-
怎么不是你想要的?除非我缺少某些要求,否则这正是您要寻找的。这是解决这个问题的标准方法。请注意,如果您担心的话,您可以修改文本组件的边框和其他内容,使它们看起来是一个组件。
-
其实我猜你是对的,我只是认为在 JTextArea 本身会有一种方法。谢谢。
-
只处理 JTextArea 中的事件,不允许对现有文本进行任何更改。应该很容易。
标签: java swing jscrollpane jtextarea