小编DVa*_*rga的帖子

使用JavaFX图表API绘制图表图像

我只想从JavaFX图表API生成图表图像.我不想显示应用程序窗口,也不想启动应用程序(如果没有必要).

public class LineChartSample extends Application {
    private List<Integer> data;

    @Override public void start(Stage stage) {
        stage.setTitle("Line Chart Sample");
        final CategoryAxis xAxis = new CategoryAxis();
        final NumberAxis yAxis = new NumberAxis();
        xAxis.setLabel("Month");       

        final LineChart<String,Number> lineChart = 
                new LineChart<String,Number>(xAxis,yAxis);

        lineChart.setTitle("Stock Monitoring, 2010");

        XYChart.Series series = new XYChart.Series();
        series.setName("My portfolio");

        series.getData().add(new XYChart.Data("Jan", 23));
        series.getData().add(new XYChart.Data("Feb", 14));        

        Scene scene  = new Scene(lineChart,800,600);
        lineChart.getData().add(series);

        WritableImage image = scene.snapshot(null);
        ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", chartFile);

        //stage.setScene(scene);
        //stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

   public …
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-2 javafx-8

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

我们可以将java方法传递给type() - > Unit的kotlin函数吗?

我有一个像下面的kotlin方法

 fun initDrawer(drawerView: DrawerView, drawerLayout: DrawerLayout, context: Context, onRefreshClick: ()  -> Unit) {
  }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试传递initDrawer(drawerView,drawerlayout,this,onRefreshClick())时,它给了我一个错误的required()无法应用于(kotlin.Unit)

是否可以将方法从java传递给kotlin.

java android kotlin

7
推荐指数
2
解决办法
2262
查看次数

无法创建抽象类的实例(随机)

我正在尝试学习 Kotlin,所以我正在学习互联网上的教程,其中讲师编写了一个与他们配合良好的代码,但它给我带来了错误。

这是错误

错误:(26, 17) Kotlin:无法创建抽象类的实例

import kotlin.random.Random

fun main(args: Array<String>) {
    feedTheFish()
}

fun feedTheFish() {
    val day = randomDay()
    val food = "pellets"
    print("Today is ${day} and the fish eat ${food}")
}


fun randomDay():String {
    val week = listOf ("Monday", "Tuesday", "wednesday", "thursday", "friday", "saturday", "sunday")
    return week[ Random().nextInt(7)]
}
Run Code Online (Sandbox Code Playgroud)

我从 return 语句中得到错误,我认为来自 Random。请帮助我理解这一点并修复此代码。

random kotlin

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

JavaFX - 加载图像和内存问题

我在将图像加载到我的应用程序时遇到了问题.我正在尝试制作一个简单的图像浏览器.在左边我有一个文件夹列表.单击列表上的文件夹名称后,图像应显示在右侧(流动窗格).每张图片都在带边框的HBox中.但是我很快就会收到这样的错误:

java.lang.outofmemoryerror java heap space
Run Code Online (Sandbox Code Playgroud)

我查看了任务管理器 - 如果我只加载6张照片,该应用程序需要500mb的内存!另一件事 - 如果我更改列表中的文件夹,内存仍然被占用.在选择另一个文件夹时,我正在创建新的flowPane

flowPane = new FlowPane();
Run Code Online (Sandbox Code Playgroud)

所以带有所有ImageView的旧版本应该被垃圾收集器删除,对吗?

如何有效管理我的应用中的图像?

  for(int i = 0 ; i < zdjecia.length; i++){
        ImageView iv2 = new ImageView();
        Image image = new Image("file:"+zdjecia[i].getAbsolutePath());
         iv2.setImage(image);
         if( image.getHeight() > image.getWidth()){
                iv2.fitHeightProperty().bind(szerokoscZdjecia.multiply(0.8).subtract(6));
        }else
                iv2.fitWidthProperty().bind(szerokoscZdjecia.subtract(6));

         iv2.setPreserveRatio(true);
         iv2.setSmooth(true);
         iv2.setCache(false);

         String styl = "-fx-border-color: #b2b3b3;"
                 + "-fx-border-width: 2;";

         HBox boxNaFotke = new HBox();
         boxNaFotke.prefWidthProperty().bind(szerokoscZdjecia);
         boxNaFotke.prefHeightProperty().bind(szerokoscZdjecia.multiply(0.8));
         boxNaFotke.setAlignment(Pos.CENTER);
         boxNaFotke.setStyle(styl);
         boxNaFotke.getChildren().add(iv2);
         fotki.add(boxNaFotke);
         flowPane.getChildren().add(boxNaFotke);
    }
Run Code Online (Sandbox Code Playgroud)

java memory load javafx image

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

从类内部调用对象的方法与在方法内调用方法

这可能是一个非常基本的问题,但在Java学习的这个阶段让我感到困惑.我有以下代码:

    package com.soti84;

    import java.util.ArrayList;

    public class InvokeMethod {

    public static void main(String[] args) {

    ArrayList<String> exams= new ArrayList<String>();
    exams.add("Java"); 
    exams.add("C#");    

    }           

    }
Run Code Online (Sandbox Code Playgroud)

如果我移动实例化ArrayList对象的行以及该方法外部对该对象的调用,则创建该对象的行很好,但不允许对该对象执行add()方法调用.这是为什么?

    package com.soti84;

    import java.util.ArrayList;

    public class InvokeMethod {
    ArrayList<String> exams= new ArrayList<String>();
    exams.add("Java"); 
    exams.add("C#");    

    public static void main(String[] args) {

    }   

    }
Run Code Online (Sandbox Code Playgroud)

谢谢.

java

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

如何使用更改侦听器JavaFX在两个ListView之间移动项目

我有两个ListViews,allStudentsList已经填充了其中的项目,currentStudentList没有.当用户选择项目时,我的目标allStudentList是移动到该项目currentStudentList.我通过在一个选择模型上放置一个监听器来做到这一点allStudentList.

我得到了一个IndexOutOfBoundsException,我不知道为什么会这样.从测试来看,似乎这个问题被隔离到这个方法的最后4行,但我不知道为什么.

allStudentsList.getSelectionModel().selectedItemProperty()
        .addListener((observableValue, oldValue, newValue) -> {
            if (allStudentsList.getSelectionModel().getSelectedItem() != null) {

                ArrayList<String> tempCurrent = new ArrayList<>();
                for (String s : currentStudentList.getItems()) {
                    tempCurrent.add(s);
                }

                ArrayList<String> tempAll = new ArrayList<>();
                for (String s : allStudentsList.getItems()) {
                    tempAll.add(s);
                }

                tempAll.remove(newValue);
                tempCurrent.add(newValue);

                // clears current studentlist and adds the new list
                if (currentStudentList.getItems().size() != 0) {
                    currentStudentList.getItems().clear();
                }
                currentStudentList.getItems().addAll(tempCurrent);

                // clears the allStudentList and adds the new …
Run Code Online (Sandbox Code Playgroud)

java listview javafx listener

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

JavaFX ComboBox - 显示文本但在选择时返回ID

我有一个机场数据库表,每个机场都有一个名称和一个ID.

在JavaFX中,我有一个表单,其中ComboBox,组合框需要显示所有机场名称,并且在提交表单时,需要将机场的ID插入数据库(而不是其名称).

但我真的不知道解决方案是什么.

我有一个

ObservableList vliegveldenList = FXCollections.observableArrayList();
ObservableList vliegveldenIDList = FXCollections.observableArrayList();
Run Code Online (Sandbox Code Playgroud)

填充数据库连接 ComboBox

ResultSet rs = Project_Fasten_Your_Seatbelt.conn.createStatement()
 .executeQuery("SELECT vliegveldnaam, vliegveld_id FROM fys_project.vliegvelden;");
while (rs.next()) {
    vliegveldenList.add(rs.getString(1));
    vliegveldenIDList.add(rs.getString(2));
}
Run Code Online (Sandbox Code Playgroud)

填充组合框:

vliegveldHerkomst.setValue("Luchthaven ...");
vliegveldHerkomst.setItems(vliegveldenList); 
Run Code Online (Sandbox Code Playgroud)

按下按钮时会将其添加到数据库中:

String registratieValue = registratieNmrTxt.getText();
String vluchtValue = vluchtNrmTxt.getText();
String vliegveldValue = (String) vliegveldHerkomst.getSelectionModel().getSelectedItem();
String bestemmingValue = (String) vliegveldBestemming.getSelectionModel().getSelectedItem(); 
String gevondenValue = (String) vliegveldGevonden.getSelectionModel().getSelectedItem();
LocalDate dGevondenValue = datumGevondenDate.getValue();
LocalDate dVluchtValue = datumVluchtDate.getValue();
String gewichtValue = gewichtBagageTxt.getText();
String kleurenValue = (String) kleuren.getSelectionModel().getSelectedItem();
String kofferValue = (String) …
Run Code Online (Sandbox Code Playgroud)

java sql combobox javafx

6
推荐指数
2
解决办法
9281
查看次数

在 JavaFX 中使用多个节点制作 Slider 控件

我想制作一个带有多个节点的 Slider(bar) 控件。

这个想法是能够使用它们设置时间间隔。

例如:

                      13:00 pm        4:00 pm
10:00 am ----------------[]------------[]-------------------- 11:00 pm
                   A             B                    C
Run Code Online (Sandbox Code Playgroud)
  • A = 上午 10:00 - 下午 13:00
  • B = 上午 13:00 - 下午 4:00
  • C = 4:00 am - 11:00 pm

但我只是注意到我无法向控件添加更多节点。有没有办法做到这一点?或者替代解决方案?

编辑:

示例中只有两个节点,但也可以是多个节点。

java javafx slider javafx-8

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

JavaFX 拖放:仅接受某些文件扩展名

我想要做的是: 当用户尝试将某些内容拖放到窗口中时,只有当拖动文件具有扩展名(.mp3、.ogg、.wav)时,他才能执行此操作。如果文件没有此扩展名删除无法完成。我不希望链接等...被删除。

例如,只接受html就这么简单:

  controller.setOnDragOver((over) -> {
            Dragboard board = over.getDragboard();
            if (board.hasHtml())
                over.acceptTransferModes(TransferMode.LINK);

        });
Run Code Online (Sandbox Code Playgroud)

我如何为此添加过滤器?

java drag-and-drop javafx

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

JavaFX:如何根据舞台使中心节点在边框窗格上居中?

我在将边框窗格中的按钮根据舞台居中时遇到问题。它根据边框窗格居中,但我希望它位于窗口的正中心。

在此输入图像描述

我指的是图片的底部,其中有播放按钮和难度选择框。

我使用边框将难度部分放在右侧,将播放按钮放在中间。

正如您所看到的,游戏并不在图片的中心。

我想这样做,但我不知道该怎么做。我认为我可以将左节点的宽度设置为等于右节点的宽度,但我的左节点没有任何内容。

// bottom section for positioning
    BorderPane settings = new BorderPane();
    settings.setPadding(new Insets(10));

    // play button
    Button playBtn = new Button("Play");
    settings.setCenter(playBtn);

    // difficulty options
    Label diffLabel = new Label("Difficulty: ");
    ChoiceBox<String> diffBox = new ChoiceBox<String>(FXCollections.observableArrayList(
            "Easy", "Standard", "Hard"
    ));
    diffBox.getSelectionModel().select(1);

    // for wrapping the diffuclty.
    HBox difficulty = new HBox(diffLabel, diffBox);
    difficulty.setAlignment(Pos.CENTER);
    difficulty.setSpacing(10);

    settings.setRight(difficulty);
Run Code Online (Sandbox Code Playgroud)

java javafx borderpane

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