标签: java-8

在JDK 1.8中,Swing渲染显得破坏,在JDK 1.7中更正

我安装了IntelliJ IDEA(13.1.1#IC-135.480)和JDK 1.8.0(x64),并使用GUI Form设计器生成了一些GUI.

然后我运行代码并意识到某些事情是不正常的.

这是我的GUI的屏幕截图: Buggy渲染JDK 1.8.0

Font的渲染似乎不合适.另外,当我将鼠标移到它上面时,Button会丢失其文本.

所以我安装了JDK 1.7.0_40(x64),重新编译了Project并再次运行它.

当我使用JDK 1.7时,会出现以下表格: 渲染OK JDB 1.7.0_40

渲染似乎没问题,按钮也没关系.

所以我安装了最新的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 swing rendering nvidia java-8

56
推荐指数
4
解决办法
3万
查看次数

为什么我们已经有StringBuilder的StringJoiner?

我最近遇到了一个Java 8类StringJoiner,它使用分隔符添加了String并添加了前缀和后缀,但我无法理解这个类的需要,因为它也在StringBuilder后端使用,并且还执行非常简单的附加操作字符串.

我是否因为没有真正理解这门课的真正目的而错过了一些东西?

java string stringbuilder java-8

56
推荐指数
5
解决办法
4万
查看次数

如何将Java枚举转换为流?

我有一个第三方图书馆给了我一个Enumeration<String>.我想懒洋洋地与枚举工作作为Java 8 Stream,呼叫之类的东西filter,mapflatMap在其上.

是否有现有的库?我已经引用了Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案.

或者,是什么把一个最好/最简单的方式Enumeration进入Stream,同时保留所有的懒惰天性?

java java-8 java-stream

56
推荐指数
5
解决办法
2万
查看次数

Java 8 - 省略繁琐的收集方法

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 java-8 java-stream

56
推荐指数
6
解决办法
3646
查看次数

Java 8的新默认界面模型如何工作(包括菱形,多重继承和优先级)?

这个新的界面模型是如何工作的以及它是什么

  • 由此产生的钻石问题
  • 此实现的多重继承特性
  • 以及使用接口实现的优先级?

java java-8

55
推荐指数
2
解决办法
2万
查看次数

java.time中的类是否与Joda-Time Interval相当?

我评估我的项目从使用迁移乔达时间java.time包的Java 8.在Joda-Time,我大量使用了这门Interval课程.我在java.time中找不到这样的东西.

有类似的课吗?

jodatime java-8 java-time

55
推荐指数
3
解决办法
2万
查看次数

JPA支持Java 8新的日期和时间API

我正在为我的新项目使用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 jpa java-8 jpa-2.1 java-time

55
推荐指数
5
解决办法
5万
查看次数

字频数Java 8

如何计算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 word-count java-8 java-stream

55
推荐指数
3
解决办法
4万
查看次数

构造函数引用 - 创建泛型数组时没有警告

在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 generics language-lawyer java-8

55
推荐指数
3
解决办法
2199
查看次数

Java Casting:Java 11抛出LambdaConversionException,而1.8则没有

以下代码在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)

HasValue Javadoc

异常(仅V11):

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 …

java eclipse java-8 java-11 vaadin-flow

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