我想为我的挥杆应用做出光滑的圆角,但我无法得到我想要的结果......
这是截图:
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) 我想点击此页面中的打印按钮:

然后保存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) 假设我们有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中我们可以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) 假设我们有一个像这样的工人列表:
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) 这是更好地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)
这两个有什么区别吗?
假设我们有这样一块板:

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

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

即{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) 哪种方法更适合访问非线程安全对象?
使用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)
或您想提供的其他方法?
重要因素是:
一般情况下,有什么优点和缺点的每个方法?
它们之间有什么明显的区别吗?
谢谢。
编辑:
我想在秋千上创造美丽的泡泡,但效果不是很好......我的意思是我想要更好更好的东西!


这是我正在使用的代码:
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) 考虑以下示例:
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) 据此,为了确定通道的可写性,我们可以调用该通道,如果可写则写入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 ×10
java-8 ×4
swing ×3
actor ×1
akka ×1
algorithm ×1
asynchronous ×1
c++ ×1
collections ×1
concurrency ×1
drawing ×1
google-maps ×1
graph-theory ×1
graphics ×1
interface ×1
java-stream ×1
javascript ×1
jbutton ×1
navigation ×1
netty ×1
networking ×1
nio ×1
performance ×1
scala ×1
selenium ×1
shapes ×1
thread-local ×1
timer ×1