我安装了IntelliJ IDEA(13.1.1#IC-135.480)和JDK 1.8.0(x64),并使用GUI Form设计器生成了一些GUI.
然后我运行代码并意识到某些事情是不正常的.
这是我的GUI的屏幕截图:

Font的渲染似乎不合适.另外,当我将鼠标移到它上面时,Button会丢失其文本.
所以我安装了JDK 1.7.0_40(x64),重新编译了Project并再次运行它.
当我使用JDK 1.7时,会出现以下表格:

渲染似乎没问题,按钮也没关系.
所以我安装了最新的Graphics和Chipset驱动程序等等,但问题仍然存在.您是否遇到过Java Swing UI这样的问题?你能帮我解决一下我的问题吗?任何帮助将不胜感激.
我创建了一个只有1个JTextArea和1个JButton的小项目,我有相同的渲染问题.
据安德鲁汤普森说,我改变了setSize(),我从EDT开始.以下示例:
package at.maeh.java.client.simpleTextClient;
import javax.swing.*;
import java.awt.*;
public class SimpleClient extends JFrame {
private JPanel panel1;
private JTextArea textArea1 = new JTextArea();
private JButton button1 = new JButton();
public SimpleClient() {
super("SimpleClient");
// Panel
panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
// BUtton
button1.setText("TestButton");
// TextArea
textArea1.setColumns(40);
textArea1.setRows(15);
// Add Components
panel1.add(textArea1);
panel1.add(button1);
// Add to Frame
this.getContentPane().add(panel1);
// pack and set Visible
pack(); …Run Code Online (Sandbox Code Playgroud) 我最近遇到了一个Java 8类StringJoiner,它使用分隔符添加了String并添加了前缀和后缀,但我无法理解这个类的需要,因为它也在StringBuilder后端使用,并且还执行非常简单的附加操作字符串.
我是否因为没有真正理解这门课的真正目的而错过了一些东西?
我有一个第三方图书馆给了我一个Enumeration<String>.我想懒洋洋地与枚举工作作为Java 8 Stream,呼叫之类的东西filter,map并flatMap在其上.
是否有现有的库?我已经引用了Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案.
或者,是什么把一个最好/最简单的方式Enumeration进入Stream,同时保留所有的懒惰天性?
Java 8 stream api非常好用,我非常喜欢它.让我紧张的一件事是90%的时间我想作为集合输入作为集合和输出.结果是我必须一直打电话stream()和collect()方法:
collection.stream().filter(p->p.isCorrect()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
是否有任何java api可以让我跳过流并直接操作集合(比如linqc#?):
collection.filter(p->p.isCorrect)
Run Code Online (Sandbox Code Playgroud) 这个新的界面模型是如何工作的以及它是什么
我评估我的项目从使用迁移乔达时间到java.time包中的Java 8.在Joda-Time,我大量使用了这门Interval课程.我在java.time中找不到这样的东西.
有类似的课吗?
我正在为我的新项目使用Java 8.
我正在尝试在java 8中使用新的日期和时间api但是我不知道是否JPA 2.1完全支持这个新的日期和时间API.
请在JPA支持Java 8中的新日期和时间API中分享您的经验/意见.
我可以使用JPA 2.1安全地在Java 8中使用新的日期和时间api吗?
更新:
我正在使用Hibernate(4.3.5.Final)作为JPA实现.
如何计算Java 8中List的单词频率?
List <String> wordsList = Lists.newArrayList("hello", "bye", "ciao", "bye", "ciao");
Run Code Online (Sandbox Code Playgroud)
结果必须是:
{ciao=2, hello=1, bye=2}
Run Code Online (Sandbox Code Playgroud) 在Java中,不可能直接创建泛型类型的数组:
Test<String>[] t1 = new Test<String>[10]; // Compile-time error
Run Code Online (Sandbox Code Playgroud)
但是,我们可以使用原始类型执行此操作:
Test<String>[] t2 = new Test[10]; // Compile warning "unchecked"
Run Code Online (Sandbox Code Playgroud)
在Java 8中,也可以使用构造函数引用:
interface ArrayCreator<T> {
T create(int n);
}
ArrayCreator<Test<String>[]> ac = Test[]::new; // No warning
Test<String>[] t3 = ac.create(10);
Run Code Online (Sandbox Code Playgroud)
为什么编译器在最后一种情况下不显示警告?它仍然使用原始类型来创建数组,对吗?
以下代码在Java 1.8 VM中可以正常运行,但是LambdaConversionException在Java 11 VM中执行时会产生一个。区别在哪里,为什么表现得如此?
public void addSomeListener(Component comp){
if(comp instanceof HasValue) {
((HasValue<?,?>) comp).addValueChangeListener(evt -> {
//do sth with evt
});
}
}
Run Code Online (Sandbox Code Playgroud)
Caused by: java.lang.invoke.LambdaConversionException: Type mismatch
for instantiated parameter 0: class java.lang.Object is not a subtype
of interface com.vaadin.flow.component.HasValue$ValueChangeEvent
at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.checkDescriptor(AbstractValidatingLambdaMetafactory.java:308)
at java.base/java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:294)
at java.base/java.lang.invoke.LambdaMetafactory.altMetafactory(LambdaMetafactory.java:503)
at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:138)
... 73 more
Run Code Online (Sandbox Code Playgroud)
ValueChangeListener<ValueChangeEvent<?>> listener = evt -> {
// do sth with evt
};
((HasValue<?,?>) comp).addValueChangeListener(listener);
Run Code Online (Sandbox Code Playgroud)
系统:
操作系统:Windows 10
IDE:Eclipse 2018-12(4.10.0)
Java(编译):ecj …