小编nac*_*okk的帖子

为两个或更多方法实现匿名类

这是来自oracle关于我正在阅读的匿名类的文章:

如果必须实现包含两个或更多方法的接口,则匿名类是理想的

我认为如果你必须实现少于两个方法,这是理想的,因为你不需要创建更具体的命名类,但如果你必须实现两个以上将更难以理解.

我的问题是:为什么要用2种或更多方法实现匿名类是理想的?

java anonymous-class java-8

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

如何正确使用SwingWorker上的publish()和process()方法?

SwingWorker中的这两个方法 目前让我感到困惑,似乎很容易错误地使用它们.

方法publish()描述了以下内容:

将数据块发送到进程(java.util.List)方法.此方法将从doInBackground方法内部使用,以提供中间结果,以便在流程方法内的事件调度线程上进行处理.

这对我来说意味着当我的工作线程正在执行其doInBackground()方法时,我能够创建"块"(这些是特定的还是这只是一种引用消息对象的方法?),然后发布它们在我的Swing GUI上进行处理.

这导致我进行处理().javadoc概述了以下内容:

在Event Dispatch Thread上异步接收来自publish方法的数据块.

在查看了这两种方法的文档后,是否有人可以澄清这种方法背后的机制是什么?据我所知,这是一个异步过程,但由于它是在EDT上进行的,我想象中有一些可预测性.

publish()文档的状态这样的:

因为在Event Dispatch Thread上异步调用了process方法,所以在执行process方法之前可能会对publish方法进行多次调用.出于性能目的,所有这些调用都合并为一个带有连接参数的调用.

总结一下,我的问题有两个:

  • 谁应该打电话process()
  • process()在SwingWorker和EDT的上下文中,工作流程是什么?

如果需要澄清,请告诉我.

java swing swingworker

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

正则表达式避免了Java中不必要的回溯

您好,我是Regex世界的新手.我想在Java中的测试字符串中提取时间戳,位置和"id_str"字段.

20110302140010915|{"user":{"is_translator":false,"show_all_inline_media":false,"following":null,"geo_enabled":true,"profile_background_image_url":"http:\/\/a3.twimg.com\/a\/1298918947\/images\/themes\/theme1\/bg.png","listed_count":0,"favourites_count":2,"verified":false,"time_zone":"Mountain Time (US & Canada)","profile_text_color":"333333","contributors_enabled":false,"statuses_count":152,"profile_sidebar_fill_color":"DDEEF6","id_str":"207356721","profile_background_tile":false,"friends_count":14,"followers_count":13,"created_at":"Mon Oct 25 04:05:43 +0000 2010","description":null,"profile_link_color":"0084B4","location":"WaKeeney, KS","profile_sidebar_border_color":"C0DEED",
Run Code Online (Sandbox Code Playgroud)

我试过这个

(\d*).*?"id_str":"(\d*)",.*"location":"([^"]*)"
Run Code Online (Sandbox Code Playgroud)

如果我使用惰性量词.*?(regexbuddy中的3000步),它有很多回溯,但是锚"id_str"和"location"之间的字符数并不总是相同的.此外,如果在字符串中找不到位置,则可能是灾难性的.

我怎样才能避免1)不必要的回溯?

2)更快找到不匹配的字符串?

谢谢.

java regex

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

Java打开一个相对于按钮位置的JFrame(类似行为的菜单)

我正在尝试实现扩展功能,如下例所示,但是我使用的JFrame包含更复杂的GUI元素,而不是菜单. 在此输入图像描述 我遇到的问题是,如果我移动包含框架应该出现的按钮的父窗口,我无法调整我的自定义JFrame每次相对于该按钮的位置打开

最初我只是用过

myCustomFrame.setLocation(myButton.getX(), (myButton.getY() + 73));
Run Code Online (Sandbox Code Playgroud)

但是如果我改变移动父窗口,这显然不起作用

之后我尝试了

myCustomFrame.setLocationRelativeTo(myButton);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,它出现在按钮的顶部...我调整特定情况的位置,但这不是一个解决方案.

所以我试图获得与菜单相同的行为,以便自动调整JFrame的位置.

有没有人有什么建议?

java user-interface swing position jframe

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

运行paint方法时的默认颜色是什么

我用这种绘画方法画一个条形图,条形图是深灰色.我只想知道当我来回变换时如何恢复颜色?

有没有Color.DEFAULT或类似的东西?或者我应该在循环之前设置setColor

public void paint(Graphics g) {
    super.paint(g);
    for (int i = 0, k = 0; i < barsArray.length; i++, k += getWidth()
        / barsArray.length) {
        g.fillRect(k + 5, getHeight() - barsArray[i] * 15, getWidth()
            / barsArray.length - 1, getHeight() * 2);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing paint

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

什么是这种模式的名称,并且不赞成?

在Java中,我最近看到很多库都有包含方法的类,这些方法总是返回类的实例,因此您可以调用多个方法而无需单独的代码行.例如:

public class Resource{

  public Resource path(String path)
      //execute some code
      return this;
  }
Run Code Online (Sandbox Code Playgroud)

所以你可以做这样的事情

new Resource.path("1").path("2").path("3")
Run Code Online (Sandbox Code Playgroud)

而不是冗长:

public void path(String path)

Resource r = new Resource();
r.path("1");
r.path("2");
r.path("3");
Run Code Online (Sandbox Code Playgroud)

这种模式是否有名称,是好/坏的做法?

java design-patterns

2
推荐指数
1
解决办法
104
查看次数

JavaFX相当于java.awt.EventQueue

JavaFX是否包含与java.awt.EventQueue等效的内容?对于我的应用程序,我需要拦截所有GUI相关的事件,如鼠标和键盘输入,到目前为止,我还没有找到一种方法来做到这一点,而无需将侦听器连接到每个GUI元素.

java swing javafx javafx-2

2
推荐指数
1
解决办法
999
查看次数

它不是抽象的,不会覆盖抽象方法

为什么我从下面的代码中收到此编译错误消息?

(程序根据键盘上按下的箭头键在4个方向上移动箭头:d)

Direction.java:41:错误:DirectionPanel.DirectionListener不是抽象的,并且不会覆盖KeyListener中的抽象方法keyReleased(KeyEvent)

private class DirectionListener implements KeyListener  {

    //Direction.java

    import javax.swing.*;
    import javax.swing.JFrame;
    import java.awt.*;
    import java.awt.event.*;

    class DirectionPanel extends JPanel  {

      private final int WIDTH = 300, HEIGHT = 200;
      private final int JUMP = 10; //increment for image movement
      private final int IMAGE_SIZE = 31;
      private ImageIcon up, down, right, left, currentImage;
      private int x, y;

      //constructor:
      public DirectionPanel ()  {

      addKeyListener (new DirectionListener());
      x =WIDTH / 2;
      y = HEIGHT / 2;
      up = new ImageIcon …
Run Code Online (Sandbox Code Playgroud)

java swing keylistener

0
推荐指数
1
解决办法
2838
查看次数

如何将一个动作侦听器分配给几个按钮?

button1.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent ae) {
                exite.setEnabled(true);
            }

        });

button2.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent ae) {
                exite.setEnabled(true);
            }

        });


button3.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent ae) {
                exite.setEnabled(true);
            }

        });
Run Code Online (Sandbox Code Playgroud)

我这里有3个按钮,但他们做同样的事情.它需要一些代码空间.如何将它们全部分组并分配给一个ActionListener?

像这样的东西.我不知道应该怎么做.

button1.button2.button3.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent ae) {
                exite.setEnabled(true);
            }

        });
Run Code Online (Sandbox Code Playgroud)

java swing jbutton actionlistener

0
推荐指数
1
解决办法
1230
查看次数

我只是坚持在数组中获取一个随机字符串

我只是坚持在数组中获取随机字符串.

到目前为止我有这个:

import java.util.Random; 

public class FootyDraw { 

        public static void main(String[] args) { 

                Random r = new Random(); 
                String[] teams = {"Arsenal", "Chelsea", "Man United", "Liverpool"}; //array         initializer 
                String draw = teams[r.nextInt(teams.length)];
          }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何让我的数组中的每个字符串项打印一次而不重复?

(比如我想得到利物浦对阵曼联,然后是切尔西和阿森纳).

java arrays

-2
推荐指数
2
解决办法
145
查看次数