三层架构

昨天在做公司的新项目,涉及到一些数据库的访问,我就拿着自己半吊子的水平尝试去写。突然想起之前看的视频教程里有涉及到 POJO 和 DAO 之类的东西,同事写的代码里确实也使用到了这些,我就像尝试着把他们加入项目中,以方便以后切换数据库。但是问题就来了,我该在 MVC 中的哪个部分调用 DAO 呢?是 Model 还是 Controller?我无法自己找到结论,就又上网去学习了一下。

继续阅读“三层架构”

使用FXML设计用户界面

介绍

在使用JavaFX的过程中,除了通过代码定义用户界面,我们还可以通过FXML的形式。FXML是JavaFX创建的一种基于XML的用户界面标记语言。相比于Java代码,FXML由于结构层级明显,更加便于书写(然而xml格式很啰嗦),并且可以在程序运行过程中动态修改(在Maven JavaFX插件中并不能)并且更好的分离了界面和功能;但是它的缺点就是无法实现复杂的逻辑(如循环),并且载入速度相比Java代码较慢(微妙的慢一点点),以下就是一段JavaFX代码。

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane xmlns:fx="http://javafx.com/fxml/1">
    <center>
        <Button text="Hello" />
    </center>
</BorderPane>
继续阅读“使用FXML设计用户界面”

移除JavaFX TitledPane的鼠标悬浮效果 Remove mouse hover effect on JavaFX TitledPane

有时候我会用JavaFX的TitledPane来区分UI中的不同部分,像这样。

TitledPane tp1 = new TitledPane();
tp1.setCollapsible(false);
TitledPane tp2 = new TitledPane();
tp2.setCollapsible(false);

通过setCollapsible()这个函数,让TitledPane不可折叠,然后用一个VBox把它们排好。

但是当我们把鼠标移动到TitledPane的标题栏上时,标题栏的背景颜色还是会变化,这就会给用户一种可以点击的错觉。经过一波操作之后,我发现可以通过修改TitledPane的css来解决这个问题。

tp1.setStyle("-fx-hover-base: -fx-base;");
继续阅读“移除JavaFX TitledPane的鼠标悬浮效果 Remove mouse hover effect on JavaFX TitledPane”

在JavaFX中实现全选/反选复选框 Make a “Select All/Check All” check box in JavaFX

全选复选框是一个十分常见的需求。比如在邮件管理软件中,我们需要对邮件进行批量移动和删除。除了在列表中的每一个条目前添加一个复选框来展示这条邮件的选中状态,我们通常还会添加一个全选复选框。这个复选框可以起到两个作用:

  1. 点击复选框来切换所有子项的选中状态。
  2. 告知用户子项的选中状态为“全选”,“全未选”还是“部分选中”。
Gmail中的“全选复选框”和“子项复选框”
继续阅读“在JavaFX中实现全选/反选复选框 Make a “Select All/Check All” check box in JavaFX”