如果必须实现包含两个或更多方法的接口,则匿名类是理想的
我认为如果你必须实现少于两个方法,这是理想的,因为你不需要创建更具体的命名类,但如果你必须实现两个以上将更难以理解.
我的问题是:为什么要用2种或更多方法实现匿名类是理想的?
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的上下文中,工作流程是什么?如果需要澄清,请告诉我.
您好,我是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)更快找到不匹配的字符串?
谢谢.
我正在尝试实现扩展功能,如下例所示,但是我使用的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的位置.
有没有人有什么建议?
我用这种绘画方法画一个条形图,条形图是深灰色.我只想知道当我来回变换时如何恢复颜色?
有没有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中,我最近看到很多库都有包含方法的类,这些方法总是返回类的实例,因此您可以调用多个方法而无需单独的代码行.例如:
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)
这种模式是否有名称,是好/坏的做法?
JavaFX是否包含与java.awt.EventQueue等效的内容?对于我的应用程序,我需要拦截所有GUI相关的事件,如鼠标和键盘输入,到目前为止,我还没有找到一种方法来做到这一点,而无需将侦听器连接到每个GUI元素.
为什么我从下面的代码中收到此编译错误消息?
(程序根据键盘上按下的箭头键在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) 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) 我只是坚持在数组中获取随机字符串.
到目前为止我有这个:
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)
有谁知道如何让我的数组中的每个字符串项打印一次而不重复?
(比如我想得到利物浦对阵曼联,然后是切尔西和阿森纳).