首页 > 其他分享 >毕设1:新建文件夹

毕设1:新建文件夹

时间:2024-01-16 21:47:53浏览次数:37  
标签:毕设 java 新建 javafx JavaFX fxml 文件夹 import 构造函数

决定在冬天把毕设水完,开春出去玩。

今日进度:新建文件夹并找一个能跑的框架

项目参考:JavaFX-Chat

1. 新建maven项目,导入javafx依赖,出现:错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序

之前一直是加了个引导类解决的,但会出现警告:Unsupported JavaFX configuration: classes were loaded from 'unnamed module @...'

原因是javafx需要用java9引入的模块系统启动,详见解决JavaFX报错缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序

那就加个模块,在包内添加module-info.java:

module com.pdfTool {
    requires javafx.controls;
    requires javafx.fxml;

    opens com.pdfTool to javafx.fxml;
    exports com.pdfTool;
}
View Code

正常启动。

 

2. 研究fxml

赶时髦下了最新版的SceneBuilder顺便把java换成了java17,虽然全装在d盘但中间看了一眼c盘感觉它快爆了,明明一学期都在玩什么花活都没有整,又下了个WizTree,手动清出13G,tx会议你为什么要搁这打200M的log,好用爱用,记一下。

先看一下项目目录:

设想是模仿聊天那个项目,样式和视图放在resources下,逻辑放在java下。由于并不想把单个fxml写很长,所以要找一个自定义组件的方法。你在干什么,我在拿java写前端三件套.jpg

 ↑ 要写的界面

主界面用一个BorderPane,各个部分单独写一个fxml,右侧的列表项目肯定要复用。以将导航栏塞进主视图做个实验:

导航栏的fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.HBox?>
<fx:root type="HBox"
         prefHeight="30"
         xmlns:fx="http://javafx.com/fxml">
    <Button fx:id="importButton" text="导入" onAction="#importPaper"></Button>
</fx:root>

外层是root,为HBox类型。里面塞几个button触发各个功能。在onAction上绑定点击事件。

但由于IDEA找不到importPaper这个方法,它会爆红。实际运行没有问题。

给它写对应的方法类:

package com.pdfTool;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.HBox;

import java.io.IOException;

public class MenuViewController extends HBox {
    public MenuViewController(){
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("views/MenuView.fxml"));
        fxmlLoader.setRoot(this);
        fxmlLoader.setController(this);

        try {
            fxmlLoader.load();
        } catch (IOException exception) {
            throw new RuntimeException(exception);
        }
    }

    @FXML
    protected void importPaper(){
        System.out.println("clicked.");
    }
}

先继承一下HBox,然后写一个构造函数,并且把构造函数标成public,这样我们在另一个fxml里引用它时会自动调用构造函数来新建对象。如果不标public会触发IllegalAccessException。

构造函数里解析fxml并加载。

对事件importPaper使用@FXML注解。

调用一下:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.BorderPane?>
<?import com.pdfTool.MenuViewController?>

<BorderPane minHeight="500" minWidth="800" xmlns="http://javafx.com/javafx/21" xmlns:fx="http://javafx.com/fxml/1">
    <top>
        <MenuViewController/>
    </top>
</BorderPane>

另一种方法是指定fx:controller,如果加上的话在当前用法中会触发Error: Controller value already specified,因为在调用MenuViewController已经创建了一个对象,这里再创建就冲突了。明天试试继承Initializable,就不用每次手动加载fxml了。

标签:毕设,java,新建,javafx,JavaFX,fxml,文件夹,import,构造函数
From: https://www.cnblogs.com/capterlliar/p/17968605

相关文章

  • 【Azure Data Lake Storage】如何才能保留Blob中的文件目录结构(即使文件夹中文件数量
    问题描述在使用AzureStorageAccountBlob时候,发现当文件夹中的Blob(文件)被全部输出后,文件夹也会消失?为什么它不能像Windows系统中的文件夹一样,即使是一个空文件夹。也会一直保留呢? 问题解答这是因为 AzureStorageAccountBlob对Container下的文件管理采用的是扁平......
  • Stable Diffusion 设置python环境文件夹
    StableDiffusion设置python环境文件夹引言作为一名经验丰富的开发者,我们经常需要在不同的项目中使用不同的Python环境。为了保持环境的稳定和隔离,我们可以使用StableDiffusion来管理Python环境文件夹。在本文中,我将向你介绍如何设置Python环境文件夹,以及每一步需要做什么。步......
  • 将特定十进制数转化成二进制数并且输出到指定文件夹中
    #include"stdio.h"#include"stdlib.h"#include"string.h"/*1~15的十进制转化为二进制,结果保存到文件中十进制二进制112103114100……1.如何实现十进制转二进制二进制数据保存到哪里?--数组charbin[32];2.给文件进行数据保存......
  • 《nodejs新建篇》nvm安装
    参考链接:https://www.cnblogs.com/jing-tian/p/11225123.html介绍nvm是node.js的版本管理工具,可以运行在多种操作系统上。nvmforwindows是使用go语言编写的软件。我电脑使用的是Windows操作系统,所以我要记录下在此操作系统上nvm的安装和使用。下载nvm-windows最新下载......
  • 《vue新建篇》新建项目
    脚手架和webpack的区别"vueinitwebpack"是Vue.js2.x的旧方式,使用webpack模板创建项目。这种方式需要手动配置一些比较复杂的webpack配置,配置大量的选项,但是可以按照个人需求进行灵活的配置。这个命令可以用来创建高度定制化的Vue.js项目。"vuecreate"是Vue.js3.......
  • 《vc6篇》vc6新建项目
    新建项目首先建立工程,点击文件->新建点击win32ConsoleApplication选择工程位置和编写工程名字,点击确定点击一个空工程添加源文件,再次进入文件->新建点击c++源文件按钮,编写源文件名字和选择源文件路径,最后点击确认便可开始c语言编程errorBK1506:cannotopenfile'......
  • Ubuntu14.04 设置共享文件夹
    由于工作原因需要使用Ubuntu14.04,尽量使用desktop版本。1、设置共享文件夹2、安装VMwareTools在虚拟机菜单中点击虚拟机,安装VMwareTools,然后会跳出有VMwareTools安装包的光盘sudocpVMwareToolsXX.tar.gz/homecd/hometar–xvfVMwareToolsXX.tar.gzcdvmware-too......
  • folder文件夹下面的文件或者文件夹全部删掉
    importjava.io.File;publicclassDeleteContents{publicstaticvoidmain(String[]args){StringfolderPath="C:/path/to/folder";Filefolder=newFile(folderPath);deleteContents(folder);System.out.pri......
  • windows下直接把文件夹打包成war包
    windows下直接把文件夹打包成war包在windows中把一个文件夹打成war包一般开发打war包时都是用MyEclipse或IntelliJIDEA等直接导出war文件,这里介绍一种如何把一个文件夹打成war包的方式,如下例如要打包的文件在D:\testWar打开cmd命令行窗口,进入文件所在目录D:\testWar然......
  • 把某个文件夹下面文件夹一起压缩成zip格式
    1.需求把某个文件夹下面文件夹一起压缩成zip格式2.要将某个文件夹下的所有文件夹和文件一起压缩成zip格式,可以使用Java的ZipOutputStream类。以下是一个示例代码:importjava.io.*;importjava.util.zip.*;publicclassZipFolder{publicstaticvoidmain(Strin......