小编use*_*927的帖子

Java lambda表达式和switch语句会导致eclipse崩溃正常吗?

我只是无法弄清楚是什么导致了eclipse中的stackoverflow问题.其实我确实知道,但我不知道为什么.我试过以下:

  1. 重启我的电脑 - 呃
  2. Eclipse.exe -clean
  3. 重新安装了一个新的日食
  4. 每次都测试完全相同的代码,每次完全相同的代码出现崩溃时.代码是lambda表达式.在我按下句号键"."之前一切正常.用于在switch语句中完成代码.

我的代码是:

albumList.getSelectionModel().selectedItemProperty()
        .addListener((ObservableValue obs, AbstractAlbum oldAlbum, AbstractAlbum selectedAlbum) -> {
     switch (type){
         test. // It doesn't matter what variable I use, valid or not, after the dot, eclipse crashes       
     }
});
Run Code Online (Sandbox Code Playgroud)

我发现我的代码没有任何问题.我在这里遵循了这个教程:http://code.makery.ch/java/javafx-8-tutorial-intro/,它也有一个lambda表达式.我尝试在此代码中添加一个开关,然后再次崩溃:

lastNameColumn.setCellValueFactory(cellData -> {
    switch (type){
        test. // again it crashed after a dot
    }
});
Run Code Online (Sandbox Code Playgroud)

有人可以确认他们是否可以复制这个?我正在使用一个全新的Eclipse:Luna for java developer 64x - 最新的软件包.这是日食的日志:

!ENTRY org.eclipse.ui 4 0 2014-11-28 22:19:08.889
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: …
Run Code Online (Sandbox Code Playgroud)

java eclipse

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

如何禁用IntelliJ IDEA UML图的自动布局?

我已经从Eclipse迁移到IntelliJ IDEA,我喜欢它的响应能力.

在Eclipse中,我使用ObjectAid来帮助设计我的应用程序结构.IntelliJ IDEA确实有一个UML图,但是当它不断地将我的图表布局重新调整到它认为是一个整洁的结构时,它真的很烦人.每次我添加/删除一个类时,它都会重新调整布局.它可能看起来很整洁,但对我来说没什么意义.我喜欢手动将我的班级模型放在我离开它的确切位置.为什么IntelliJ为什么认为它最了解?我可以改变这种行为吗?我在设置菜单中找不到任何设置.

intellij-idea

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

跨多个工作站同步Android Studio项目

我希望能够跨多个工作站同时从一个工作站跳到另一个工作站,而不必担心提交.

我有Windows个人和工作台式机和Mac OSX笔记本电脑.目前,我将我的项目指向云目录,并将本地安装的Android Studio指向另一个云目录中的gradle脱机缓存.这会导致失败,因为它告诉我gradle的路径无效.据我所知,因为gradle在不同机器的不同位置被引用(考虑到MACOSX和Windows7中不同的文件管理系统).

编辑:当我尝试打开项目时,它会显示"从Gradle导入项目"屏幕.我可以选择"使用本地gradle发行版"并选择Gradle主目录.我把它指向缓存目录,它告诉我:

Cannot Save Settings
Gradle location is incorrect.
Location:C:/Users/Username/.gradle
Run Code Online (Sandbox Code Playgroud)

我所有的研究(包括这些问题的答案在这里,和这里)表明,VCS是要走的路.但是,我不认为这是解决我的问题的方法.我不是在寻求版本控制,我希望在工作站之间无缝过渡.当然,我仍然会使用版本控制系统来保存我的代码的工作版本,或者与其他开发人员共享它,但是当我只想让所有工作站同步时,必须有更好的方法.

我来自Web开发,我在AMPPS上同步本地环境而没有任何问题.这意味着我可以立即从个人桌面,笔记本电脑和工作桌面过渡.如果我每次搬家都要记得提交,那就让我感到沮丧.如果我每天必须这样做20次,并且这需要大约一分钟的时间,这可能花费了20分钟来编写一些功能.如果我忘记承诺,那么我开始工作,或者回家,这将浪费一天,因为我实际上不会拥有当前的最新代码......

所以问题仍然存在,有没有办法立即同步Android Studio项目?如何保持所有代码库(即gradle)同步?

cloud android-studio

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

如何在JavaFX 8中隐藏TableView列标题?

我需要有一个可观察的类型列表,该列表将显示在带有一个列的TableView中,选中后将在右侧显示其余信息.TableView包含在TitledPane中,它包含在Accordion中.见下图:

在此输入图像描述

正如您在此场景中看到的,我不想显示列标题.

我试着按照这里的说明进行操作,这里是:

Pane header = (Pane) list.lookup("TableHeaderRow");
header.setMaxHeight(0);
header.setMinHeight(0);
header.setPrefHeight(0);
header.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

但是,它似乎不适用于JavaFX 8.查找("TableHeaderRow")方法返回null,这使我认为"TableHeaderRow"选择器不再存在.

是否有更新的解决方法来删除/隐藏JavaFX 8中的表头?

java javafx columnheader tableview

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

在Java Swing中实现MVC的Controller部分

这个问题围绕着在Java中实现MVC架构的标准实践 - 特别是Swing.我知道之前已经提出过这个问题,但我希望对控制器的使用有所了解.

我一直在分离我的模型,视图和控制器,其中:

  • 数据在模型类中处理
  • Swing组件在视图类中
  • 事件处理匿名类也在视图类中(用户输入)
  • 控制器类包含对模型和视图对象的引用

回到控制器的具体情况 - 我一直在使用类(静态)变量来表示控制器,以便我的应用程序的任何部分都能轻松访问.所以我的控制器类可能如下所示:

public class Controller {
    public static ControllerA controllerA;
    public static ControllerB controllerB;
}

public class ControllerA {
    private JPanel panel1;
    private JPanel panel2;
    private DefaultListModel list;
}

...
Run Code Online (Sandbox Code Playgroud)

每当我需要做某事时,我会像这样调用控制器:

Controller.controllerA.doSomething
Run Code Online (Sandbox Code Playgroud)

这意味着我的大部分代码都位于控制器中.通常,如果我需要做某事,控制器会有一个方法,它通常需要视图或模型中的等效方法来完成任务.我发现这会导致代码重复.例如:

Controller.controllerA.removeElement();
Run Code Online (Sandbox Code Playgroud)

将在控制器中调用以下方法:

protected void removeElement() {
    list.removeElement()
}
Run Code Online (Sandbox Code Playgroud)

随着我的应用程序的增长,我看到很多实例,控制器只是镜像模型或视图所需的操作,因为它是视图/模型的主要访问点.

所以我的问题是:

  • 使用静态变量访问控制器对象是一个好习惯吗?
  • 控制器 - >模型和控制器 - >之间的代码重复是否会影响MVC的副作用?
  • 我做错了吗?如果是这样,您将如何在MVC中实现控制器?

java model-view-controller swing

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

如何在 Java 中中断/终止挂起的线程?

我试图弄清楚线程在 Java 中是如何工作的。我想了解如何中断为运行另一个终端进程而创建的线程。我有以下线程:

  • 主线程
  • swing 线程- 管理 GUI
  • 终端线程- 运行终端进程

终端进程需要将其输出提供给终端线程的输入流。我已经设法通过 while 循环来做到这一点。然而,如果终端进程被卡住(例如等待用户输入),这样做实际上会挂起线程。

我的问题有两个:

  1. 如何中断终端线程?(参见下面我的代码)
  2. 如果我通过主线程和 swing 线程关闭我的应用程序,这会关闭终端线程吗?我一直以这种方式关闭我的应用程序......幽灵线程会继续运行吗?如果是这样,我该如何驱除它?

下面的代码是运行线程的可运行实现,该线程依次运行终端进程:

public void run(){
    ProcessBuilder pb=new ProcessBuilder("Enter a terminal process that hangs here");
    pb.redirectErrorStream(true);

    Process pr;
    try {
        pr = pb.start();
        BufferedReader in = new BufferedReader(new 
        InputStreamReader(pr.getInputStream()));
        String line;
        try {
            while ((line = in.readLine()) != null && !Thread.currentThread().isInterrupted()) {
                System.out.println(line);
            }
            pr.waitFor();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("ok!");
        in.close();
        //System.exit(0);
    } catch …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

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

如何使用Java 8 Duration.of(金额,单位)方法?

我试过这个:Duration.of(3,SECONDS)根据例子,但SECONDS常量来自何处?它没有评估任何东西.

java duration

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