我有2个JTextArea(j1,j2); j1用作控制台java输入,而j2用作控制台输出。我也有2个按钮(b1,b2),我想设置b2“隐形”; b1接受j1命令并启动它们,而b2接受j2的最后一行。我试图在第一行放入b2的公共无效ActionPerformed
b1.doClick();
TakeLastLineJTextArea(j2);
b1正常工作,它在j2上写了一些输出,我要用TakeLastLineJTextArea(j2);
输出的输出
但它不需要最后一次输出,因为它需要先前的输出。
它的工作原理如下:
j2 =“欢迎” 点击后的j2 =“欢迎(新行)输出”
TakeLastLineJTextArea(j2);
不占用最后一行(输出)。
有没有办法做到这一点,或者我必须每次点击两个按钮?
public static void TakeLastLineJTextArea(JTextArea j){
String [] array = j.getText().split("\\r?\\n");
int last = array.length;
switch (array[last-1]){
case "output" :
Cambiostanza( 1,label1);
Cambiopiantina(1,label2);
break;
case "output1" :
Cambiopiantina(2,label3);
break;
default:
System.out.println("Error");
break;
}
}
答案 0 :(得分:0)
您的TakeLastLineJTextArea
方法将所有文本从JTextArea
通过j.getText()
方法获取为一个字符串,稍后您使用split("\\r?\\n")
方法获取一行文本,在您的示例中为j2将有文字:
"Welcome (new line) Output = some output"
分手后,您将进入array[last-1]
:
" Output = some output"
并且您在切换中使用此功能与"output"
和"output1"
进行比较。
这不起作用。
你可以使用最后一行array[last-1]
,之后你应该用空格进行另一次拆分,例如:
String lastLine = array[ last - 1 ].trim();
String[] splitedLine = lastLine.split( "\\s+" );
last = splitedLine.length;
switch( splitedLine[ last - 1 ] )
{
case "output":
Cambiostanza( 1, label1 );
Cambiopiantina( 1, label2 );
break;
case "output1":
Cambiopiantina( 2, label3 );
break;
default:
System.out.println( "Error" );
break;
}
使用此代码,您应该以{{1}}结尾。
虽然我并不完全明白你想要达到的目标。