小编Osc*_*nez的帖子

访问java中内部类中的变量

我正在尝试创建一个JLabel数组,所有这些都应该在单击时隐藏.当尝试通过需要访问用于声明标签的循环的迭代变量的内部类来设置鼠标侦听器时,会出现问题.代码不言自明:

    for(int i=1; i<label.length; i++) {
       label[i] = new JLabel("label " + i);
       label[i].addMouseListener(new MouseAdapter() {
          public void mouseClicked(MouseEvent me) {
             label[i].setVisible(false);   // compilation error here
          }
       });
       cpane.add(label[i]);
    }
Run Code Online (Sandbox Code Playgroud)

我认为我可以通过使用this或者super代替label[i]内部方法中的调用来克服这个问题,但我无法弄明白.

编译错误是:从内部类中访问局部变量i; 需要被宣布为最终的

我敢肯定答案肯定是我没想过的傻事,或者我犯了一些小错误.

任何帮助,将不胜感激

java variables jlabel event-handling inner-classes

17
推荐指数
1
解决办法
4万
查看次数

表示为String的2D矩阵的正则表达式

我试图在表示为字符串的2D矩阵中搜索模式.请注意以下事项:

// horizontal line
String pat1 =
    "............." +
    "............." +
    "............." +
    "....XXXX....." +
    "............." +
    ".............";

// vertical line
String pat2 =
    "............." +
    "......X......" +
    "......X......" +
    "......X......" +
    "......X......" +
    ".............";
Run Code Online (Sandbox Code Playgroud)

搜索第一个模式将是微不足道的,正则表达式将是这样的:

X+
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,它有点棘手但可行,因为我知道矩阵的列数和行数:

(X.{`WIDTH - 1`})+
Run Code Online (Sandbox Code Playgroud)

当我遇到问题想出正确的正则表达式时,我试图找出一种方法来识别以下模式:

// fixed but unknown number of columns
String pat3 =
    "............." +
    ".....XXX....." +
    ".....XXX....." +
    ".....XXX....." +
    ".....XXX....." +
    ".............";

// variable number of columns
String pat4 =
    "............." +
    ".....XXX....." +
    "....XXXXX...." +
    "...XXXXXXX..." +
    ".....XXX....." …
Run Code Online (Sandbox Code Playgroud)

java regex matrix

7
推荐指数
1
解决办法
464
查看次数

使用套接字的java简单telnet客户端

我已经阅读了很多关于这个主题的内容,telnet是一个协议,不是简单的套接字连接,等待换行符,使用外部库等等......

最重要的是,我需要一个快速而脏的java telnet应用程序启动和运行,不一定可扩展,不一定漂亮,所以我试图避免使用库,系统函数调用等.我一直在尝试和测试,到目前为止,当我尝试登录路由器(当然通过telnet)时,我得到了......没有.

这是我到目前为止使用的代码的剪辑,请有人指出我正确的方向,因为我不知道还应该尝试什么,因为我确信它必须是非常简单和愚蠢的东西我失踪了.提前致谢!

Socket socket = new Socket("192.168.1.1", 23);
socket.setKeepAlive(true);
BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter w = new PrintWriter(socket.getOutputStream(),true);

int c=0;
while ((c = r.read()) != -1)
    System.out.print((char)c);

w.print("1234\r\n"); // also tried simply \n or \r
//w.flush();
//Thread.sleep(1000);

while ((c = r.read()) != -1)
    System.out.print((char)c);

w.print("1234\r\n");
//Thread.sleep(1000);

while ((c = r.read()) != -1)
    System.out.print((char)c);

socket.close();
Run Code Online (Sandbox Code Playgroud)

java sockets telnet

6
推荐指数
1
解决办法
5万
查看次数

如何在Google App脚本中为具有多个帐户的用户选择帐户?

对于已登录多个帐户的用户,脚本如何让用户选择一个帐户?例如,Gmail,Google云端硬盘等为用户提供了一种通过页面右上方的可选选项来选择要使用的帐户的方法:

gdrive屏幕截图

开发人员如何实现类似的机制?

google-apps-script

5
推荐指数
1
解决办法
1002
查看次数

如何从 Android Studio 运行 Android Automotive OS 应用?

我正在尝试在 Android Studio 的模拟器中运行 Android Automotive OS 应用程序。

在 Android Studio 中打开 Android Automotive OS 项目并单击运行按钮时,出现以下错误:Error running 'automotive': Default Activity not found。Android Studio的运行配置也显示此警告:

未找到默认活动

如何从 Android Studio 运行 Android Automotive OS 应用?

android-automotive

3
推荐指数
1
解决办法
1061
查看次数