小编FaN*_*NaJ的帖子

在秋千上圆滑的圆角

我想为我的挥杆应用做出光滑的圆角,但我无法得到我想要的结果......

这是截图:

1. setShape()对于JFrame:

在此输入图像描述

2. paintComponent()JPanel的覆盖方法,而不是使用setShape():

在此输入图像描述

3. setBackground(new Color(0, 0, 0, 0))对于JFrame:

在此输入图像描述

好吧,但文字质量有问题:

在第3步之前:

在此输入图像描述

在第3步之后:

在此输入图像描述

伙计们我很困惑,我已多次搜索,但没有任何帮助我...我该怎么办?请帮我

这是完整的代码:

public class WelcomePage extends JFrame {

private Point initialClick;
private boolean end = false;
private JLabel jLabelAppTitle;
private JPanel jPanelExit;
private JLabel jLabelHint;
private int r = 220, g = 0, b = 0;
private int r2 = 10, g2 = 10, b2 = 10;
private boolean flag = false;

public WelcomePage() {
    initComponents();
//    setShape(new RoundRectangle2D.Double(0, 0, …
Run Code Online (Sandbox Code Playgroud)

java swing rounded-corners jbutton java-8

18
推荐指数
2
解决办法
1825
查看次数

如何使用Selenium单击网页上的打印按钮

我想点击此页面中的打印按钮:

https://www.google.com/maps/dir/40.4515849,-3.6903752/41.380896,2.1228198/@40.4515849,-3.6903752/am=t/?hl=en

在此输入图像描述

然后保存PDF ...

在此输入图像描述

这是单击按钮的代码:

String url = "https://www.google.com/maps/dir/40.4515849,-3.6903752/41.380896,2.1228198/@40.4515849,-3.6903752/am=t/?hl=en";

WebDriver driver = new HtmlUnitDriver();
driver.get(url);

System.out.println(driver.getTitle());
System.out.println(driver.getCurrentUrl());

WebElement element = driver.findElement(By.xpath("//*[@id=\"text-mode-options-header\"]/div/div/div[2]/div[2]/div/button[1]"));
element.click();

System.out.println("Page title is: " + driver.getTitle());
driver.quit();
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

    Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate a node using //*[@id="text-mode-options-header"]/div/div/div[2]/div[2]/div/button[1]
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:58'
Driver info: driver.version: HtmlUnitDriver
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByXPath(HtmlUnitDriver.java:1057)
    at org.openqa.selenium.By$ByXPath.findElement(By.java:357)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1575)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1251)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1572)
    at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:532)
    at com.controlstation.start.Main.main(Main.java:24)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript java navigation selenium google-maps

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

Java 8流和parallelStream

假设我们有Collection这样的:

Set<Set<Integer>> set = Collections.newSetFromMap(new ConcurrentHashMap<>());
for (int i = 0; i < 10; i++) {
    Set<Integer> subSet = Collections.newSetFromMap(new ConcurrentHashMap<>());
    subSet.add(1 + (i * 5));
    subSet.add(2 + (i * 5));
    subSet.add(3 + (i * 5));
    subSet.add(4 + (i * 5));
    subSet.add(5 + (i * 5));
    set.add(subSet);
}
Run Code Online (Sandbox Code Playgroud)

并处理它:

set.stream().forEach(subSet -> subSet.stream().forEach(System.out::println));
Run Code Online (Sandbox Code Playgroud)

要么

set.parallelStream().forEach(subSet -> subSet.stream().forEach(System.out::println));
Run Code Online (Sandbox Code Playgroud)

要么

set.stream().forEach(subSet -> subSet.parallelStream().forEach(System.out::println));
Run Code Online (Sandbox Code Playgroud)

要么

set.parallelStream().forEach(subSet -> subSet.parallelStream().forEach(System.out::println));
Run Code Online (Sandbox Code Playgroud)

所以,有人可以解释我:

  • 他们之间有什么区别?
  • 哪一个更好?快点?更安全?
  • 哪一个适合大量收藏?
  • 当我们想对每个项目应用繁重的流程时,哪一个是好的?

java collections parallel-processing java-8 java-stream

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

在C++中使用匿名类实现接口

在java中我们可以interface用这样的Anonymous类实现:

import java.util.function.Predicate;

public class Test {

    public static void main(String[] args) {
        System.out.println(testIf("", new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.isEmpty();
            }
        }));
    }

    public static <T> boolean testIf(T t, Predicate<T> predicate) {
        return predicate.test(t);
    }

}
Run Code Online (Sandbox Code Playgroud)

从Java 8开始:

System.out.println(testIf("", String::isEmpty));
Run Code Online (Sandbox Code Playgroud)

我们怎么能用c ++做呢?我编写了以下代码但是我收到了编译错误:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

template <class T>
class Predicate
{
public:
    virtual bool test(T) = 0;
};

template <class T>
bool testIf(T t, Predicate<T> predicate)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ java interface anonymous-class

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

Java 8 parallelStream findFirst

假设我们有一个像这样的工人列表:

List<Worker> workers = new ArrayList<>();
workers.add(new Worker(1));
workers.add(new Worker(2));
workers.add(new Worker(3));
workers.add(new Worker(4));
workers.add(new Worker(5));
Run Code Online (Sandbox Code Playgroud)

我想找到第一个完成工作的工人,所以:

Worker first = workers.parallelStream().filter(Worker::finish).findFirst().orElse(null);
Run Code Online (Sandbox Code Playgroud)

但是有一个问题,我不想等待所有工人完成他们的工作然后找到第一个,但第一个工人一完成他的工作!

public class Test {

    public static void main(String[] args) {
        List<Worker> workers = new ArrayList<>();
        workers.add(new Worker(1));
        workers.add(new Worker(2));
        workers.add(new Worker(3));
        workers.add(new Worker(4));
        workers.add(new Worker(5));
        Worker first = workers.parallelStream().filter(Worker::finish).findFirst().orElse(null);
        if (first != null) {
            System.out.println("id : " + first.id);
        }
    }

    static class Worker {

        int id;

        Worker(int id) {
            this.id = id;
        }

        boolean finish() …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing java-8

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

在Swing应用程序内部的javax.swing.Timer与java.util.Timer

这是更好地javax.swing.Timer在swing应用程序内使用而不是使用java.util.Timer

例如:

Timer timer = new Timer(1000, e -> label.setText(new Date().toString()));
    timer.setCoalesce(true);
    timer.setRepeats(true);
    timer.setInitialDelay(0);
    timer.start();
Run Code Online (Sandbox Code Playgroud)

要么

new java.util.Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            label.setText(new Date().toString());
        }
    }, 0, 1000);
Run Code Online (Sandbox Code Playgroud)

这两个有什么区别吗?

java swing timer event-dispatch-thread java-8

4
推荐指数
2
解决办法
4310
查看次数

如何在电路板中找到最有利可图的路径

假设我们有这样一块板:

在此输入图像描述

我们希望通过以下运动模式从左到右找到最有利可图的路径:

在此输入图像描述

例如,在这个董事会中,最有利可图的途径是:

在此输入图像描述

即{2,0} - > {2,1} - > {3,2} - > {3,3}

我写了以下代码:

import java.util.*;

public final class Board {

    private final int[][] board;
    private final int n;

    public Board(int n) {
        board = new int[n][n];
        this.n = n;
        generateBoard();
    }

    public static class Node {

        public int x;
        public int y;
        public int value;

        public Node(int x, int y, int value) {
            this.x = x;
            this.y = y;
            this.value = value;
        }

        @Override
        public String toString() {
            return …
Run Code Online (Sandbox Code Playgroud)

java algorithm graph-theory tree-traversal data-structures

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

Java - ThreadLocal 还是并发对象池?

哪种方法更适合访问非线程安全对象

使用ThreadLocal对象:

static final ThreadLocal<NonThreadSafeParser> PARSER_THREAD_LOCAL = new ThreadLocal<NonThreadSafeParser>() {
    @Override
    protected NonThreadSafeParser initialValue() {
        return new NonThreadSafeParser();
    }
};

void parse(String input) {
    PARSER_THREAD_LOCAL.get().parse(input);
}
Run Code Online (Sandbox Code Playgroud)

使用并发对象池

static final ConcurrentObjectPool<NonThreadSafeParser> PARSER_POOL = new ConcurrentObjectPool<>();

void parse(String input) {
    NonThreadSafeParser parser = PARSER_POOL.borrow();
    try {
        parser.parse(input);
    } finally {
        PARSER_POOL.release(parser);
    }
}
Run Code Online (Sandbox Code Playgroud)

或您想提供的其他方法?

重要因素是:

  • 表现
  • 内存使用情况
  • 垃圾收集

一般情况下,有什么优点缺点的每个方法?

它们之间有什么明显的区别吗?

谢谢。

编辑

Kryo使用的并发对象池示例。

java concurrency performance thread-local object-pooling

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

在秋千中画出美丽的泡泡

我想在秋千上创造美丽的泡泡,但效果不是很好......我的意思是我想要更好更好的东西!

在此输入图像描述

在此输入图像描述

这是我正在使用的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.geom.Area;
import java.awt.geom.RoundRectangle2D;

public class BubbleTest {

    public static void main(String[] args) {
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        LeftArrowBubble leftArrowBubble = new LeftArrowBubble();
        JOptionPane.showMessageDialog(null, leftArrowBubble);
        RightArrowBubble rightArrowBubble = new RightArrowBubble();
        JOptionPane.showMessageDialog(null, rightArrowBubble);
    }

    private static class LeftArrowBubble extends JPanel {

        private int strokeThickness = 5;
        private int padding = strokeThickness …
Run Code Online (Sandbox Code Playgroud)

java graphics swing drawing shapes

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

Akka 演员 - 发件人指向死信

考虑以下示例:

case class Payload(message: String, async: Boolean)

class EchoActor extends Actor {
  override def receive: Receive = {
    case Payload(message, async) =>
      if (async) Future {
        println(s"from: $sender")
        sender ! message
      } else {
        println(s"from: $sender")
        sender ! message
      }
  }
}

def main(args: Array[String]): Unit = {
  val system = ActorSystem("demo")
  val echo = system.actorOf(Props[EchoActor])
  implicit val timeout = Timeout(2 seconds)

  (echo ? Payload("Hello", async = false)).mapTo[String].foreach(println(_))
  (echo ? Payload("Async Hello", async = true)).mapTo[String].foreach(println(_))

  StdIn.readLine()
  system.terminate()
}
Run Code Online (Sandbox Code Playgroud)

控制台输出:

from: …
Run Code Online (Sandbox Code Playgroud)

asynchronous scala actor akka

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

Netty - 写入通道直到其可写

据此为了确定通道的可写性,我们可以调用该通道,如果可写则写入channel.isWritable该通道。

IE :

private void writeIfPossible(Channel channel) {
    while(needsToWrite && channel.isWritable()) {
        channel.writeAndFlush(createMessage());
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这个怎么样:

private void writeIfPossible(ChannelHandlerContext ctx) {
    Channel channel = ctx.channel();
    channel.eventLoop().execute(() -> {
        while (needsToWrite && channel.isWritable()) {
            ctx.write(createMessage(), ctx.voidPromise());
        }
        ctx.flush();
    });
}
Run Code Online (Sandbox Code Playgroud)

它是否正确?我的意思是,channel.write(或ctx.write)对通道的可写性有什么影响吗?channel.flush或者我们必须在每次写入后调用?

谢谢。

java networking nio netty

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