ActionPerformed在不同的JTextArea上的不同按钮

时间:2015-05-07 10:02:43

标签: java button console

我有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;
    }
  }

1 个答案:

答案 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​​}}结尾。

虽然我并不完全明白你想要达到的目标。