我正在开发一个访问SQLite数据库的应用程序.问题是当有查询时数据库被锁定.大多数情况下,这不是问题,因为应用程序的流程非常线性.
但是我有一个很长的计算过程,由用户触发.此过程涉及在计算之间多次调用数据库.
我希望用户获得一些视觉反馈,因此我一直在使用Javafx progressIndicator和来自Javafx.Concurrency框架的服务.问题是这使用户可以自由地在应用程序中移动并可能触发对数据库的其他调用.
这导致数据库文件被锁定的异常.我希望有一种方法可以阻止该线程在这种情况发生时运行但是我无法在线找到任何明确的例子.他们中的大多数都过于简单了,我想要一种可扩展的方式.我尝试过使用cancel()方法,但这并不能保证线程会及时被取消.
因为我无法检查isCancelled的代码的所有部分,有时在线程被取消的时间和它有效停止的时间之间存在延迟.
所以我想到了以下解决方案,但我想知道在效率和避免竞争条件和悬挂方面是否有更好的方法.
// Start service
final CalculatorService calculatorService = new CalculatorService();
// Register service with thread manager
threadManager.registerService(CalculatorService);
// Show the progress indicator only when the service is running
progressIndicator.visibleProperty().bind(calculatorService.runningProperty());
calculatorService.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent workerStateEvent) {
System.out.println("SUCCEEDED");
calculatorService.setStopped(true);
}
});
// If something goes wrong display message
calculatorService.setOnFailed(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent workerStateEvent) {
System.out.println("FAILED");
calculatorService.setStopped(true);
}
});
// Restart the service
calculatorService.restart();
Run Code Online (Sandbox Code Playgroud)
这是我的服务类,我已经将其子类化,包括可用于设置服务状态的方法(已停止或未停止)
public class CalculatorService extends Service implements …Run Code Online (Sandbox Code Playgroud) 我正在使用gulp,我想知道它是否具有代码拆分功能.类似于webpack网站中提到的内容.我看过网上但看不到任何专门的东西.
我在一棵树中有彼此相关的类别。每个类别的hasMany孩子。每个端类hasMany产品。
产品belongsToMany种类也不同。
我希望将他们的孩子和产品加载到类别中,但是我也想提出一个条件,即产品属于某种类型。
这是我的类别模型的样子
public function children()
{
return $this->hasMany('Category', 'parent_id', 'id');
}
public function products()
{
return $this->hasMany('Product', 'category_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)
产品型号
public function types()
{
return $this->belongsToMany(type::class, 'product_type');
}
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,我有四个表:category,product,type和product_type
我尝试过像这样的急切加载,但是它加载了所有产品,而不仅仅是满足条件的产品:
$parentLineCategories = ProductCategory::with('children')->with(['products'=> function ($query) {
$query->join('product_type', 'product_type.product_id', '=', 'product.id')
->where('product_type.type_id', '=', $SpecificID);
}]])->get();
Run Code Online (Sandbox Code Playgroud) 我正在使用react.js和react-router和webpack开发一个webapp。我想使用react-bootstrap进行样式设置,但我的导航栏似乎没有如下所示的样式 :http://react-bootstrap.github.io/components.html#navbars
这是我的react-bootstrap代码
<Navbar inverse fixedTop>
<Navbar.Collapse>
<Nav bsStyle="pills">
<NavItem href="#"><Link to="/">{this.state.navMenu[0] }</Link></NavItem>
<NavItem href="#"><Link to="/utilities">{this.state.navMenu[3] }</Link></NavItem>
<NavItem href="#"><Link to="/main">{this.state.navMenu[4] }</Link></NavItem>
</Nav>
</Navbar.Collapse>
</Navbar>
Run Code Online (Sandbox Code Playgroud)
这些是依赖
"devDependencies": {
"babel-cli": "^6.4.0",
"babel-core": "^6.4.0",
"babel-polyfill": "^6.3.14",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-stage-0": "^6.3.13",
"css-loader": "^0.23.1",
"file-loader": "^0.8.5",
"history": "^1.17.0",
"react": "^0.14.6",
"react-dom": "^0.14.6",
"style-loader": "^0.13.0",
"webpack": "^1.12.11",
"webpack-dev-server": "^1.14.1"},
"dependencies": {
"bootstrap": "^3.3.6",
"imports-loader": "^0.6.5",
"react": "^0.14.6",
"react-bootstrap": "^0.28.2",
"react-router": "^2.0.0-rc5"
}
Run Code Online (Sandbox Code Playgroud)
这是webpack.config文件
var webpack = require('webpack');
module.exports = {
entry: [
'babel-polyfill',
'webpack/hot/only-dev-server', …Run Code Online (Sandbox Code Playgroud) 我有一个带有 ScrollPane 的 javafx 警报。在 ScrollPane 内部,我正在加载一个网格窗格,其大小可以根据内容而变化。因此,警报随着 GridPane 的内容而增长。我正在使用 GridPane 来防止警报超出应用程序屏幕大小并允许滚动。但这是行不通的。相反,警报的大小超出了我设置的范围。
这是我的代码:
ScrollPane scroll = new ScrollPane();
scroll.setContent(gridpane);
scroll.setMaxHeight(500);
alert.getDialogPane().setContent(scroll);
Run Code Online (Sandbox Code Playgroud)
其中alert是javafx Alert类的实例,并且gridpane具有动态添加的内容。
是gridpane一个实例,CustomGrid定义如下:
public class CustomGrid extends GridPane{
public CustomGrid() {
this.setHgap(20);
this.setVgap(20);
ColumnConstraints firstColConstraints = new ColumnConstraints();
firstColConstraints.setHalignment(HPos.RIGHT);
firstColConstraints.setPercentWidth(50.0);
firstColConstraints.setHgrow(Priority.ALWAYS);
ColumnConstraints secondColConstraints = new ColumnConstraints();
ColumnConstraints thirdColConstraints = new ColumnConstraints();
thirdColConstraints.setHgrow(Priority.ALWAYS);
this.getColumnConstraints().addAll(firstColConstraints, secondColConstraints, thirdColConstraints);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试向选定的表格行添加红色边框,并且该行中的元素正在移动。
这是我的CSS:
.my-table .table-row-cell:filled:selected {
-fx-border-color: red;
}
Run Code Online (Sandbox Code Playgroud)
这是其外观的屏幕截图。
我该如何纠正?我尝试过更改边框插图,但似乎没有效果。
-fx-background-insets: 0, 1 ;
Run Code Online (Sandbox Code Playgroud)
用于创建表的代码是:
<TableView styleClass="my-table" editable="false" >
<columns>
<TableColumn fx:id="columnNumber" minWidth="70" prefWidth="70" sortable="false" text="Solution" />
<TableColumn fx:id="columnOne" minWidth="0" prefWidth="40" sortable="false" text="columnOne" />
<TableColumn fx:id="columnTwo" minWidth="40" prefWidth="40" sortable="false" text="columnTwo" />
<TableColumn fx:id="columnThree" minWidth="70" prefWidth="70" sortable="false" text="columnThree" />
<TableColumn fx:id="columnFour" minWidth="40" prefWidth="40" sortable="false" text="columnFour" />
<TableColumn fx:id="columnFive" minWidth="80" prefWidth="80" sortable="false" text="columnFive" />
<TableColumn fx:id="columnSix" minWidth="80" prefWidth="80" sortable="false" text="columnSix" />
<TableColumn fx:id="columnSeven" minWidth="80" prefWidth="80" sortable="false" text="columnSeven" />
<TableColumn fx:id="columnEight" minWidth="180" prefWidth="180" …Run Code Online (Sandbox Code Playgroud) 有谁知道我如何制作使用chart.js 制作的可滚动图表。我有一个条形图,它在 x 轴上有很长的类别列表。当我将浏览器视图更改为移动屏幕时,x 轴上的标签会相互插入,因此无法读取不同的类别。
我正在通过使图表水平滚动来寻找解决方案。那可能吗??
这是我的造型:
.pagination .pagination-control .button, .pagination .toggle-button {
-fx-background-color: -fx-paginator-button;
-fx-border-color: -fx-colour-dark-grey;
}
.pagination .pagination-control .toggle-button:selected {
-fx-background-color: -fx-colour-purple;
}
.pagination .pagination-control .toggle-button:hover, .pagination .pagination-control .button:hover {
-fx-background-color: -fx-bg-colour-grey;
}
.pagination .pagination-control .left-arrow, .right-arrow{
-fx-background-color: -fx-font-colour-black;
}
.pagination .label {
-fx-text-fill: -fx-font-colour-black;
}
Run Code Online (Sandbox Code Playgroud)
这是结果:
背景颜色似乎有问题.当选择按钮时,它会在底部稍微溢出,而对于箭头按钮,背景不会应用于整个按钮(如果你仔细观察最右边的箭头按钮,背景颜色会结束,留下一点白色条带).另外我如何增加按钮的大小(它们实际上比图像小)?我试过像这样设置prefWidth和prefHeight没有结果
.pagination .pagination-control .button, .pagination .toggle-button {
-fx-background-color: -fx-paginator-button;
-fx-border-color: -fx-colour-grey;
-fx-pref-width: 15;
-fx-pref-height: 15;
}
Run Code Online (Sandbox Code Playgroud) 将标记保存到firebase中的记录的方法有哪些.例如,我有一个拥有收藏夹的用户,他/她可以为收藏夹添加多个标签.我希望能够通过一个或多个标签进行查询?
这是基本结构
Users{
favourites: {
fav_1:{
tags:[tag1,tag2,tag3,...]
}
fav_2:{
tags:[tag1,tag2,...]
}
.....
}
Run Code Online (Sandbox Code Playgroud)
}
我使用 laravel 5.2,我想根据两列(配置和类型)的值对表进行分组。因此,基本上,如果表中的两行或多行具有相同的配置和类型,它们将被分组。我尝试过这样的查询,但它不起作用:
$groups = Model::where('active', 1)->get()->groupBy('type_id', 'configuration_id');
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
编辑:我认为我使用了错误的查询。我想要做的是获取这两列中具有相同值的行并将它们分组。显然,group by 用于聚合事物,例如,如果我想要一个总和或其他东西。
编辑2:实际上我在这里使用的groupby不是查询的一部分,它是laravel提供的用于集合的辅助函数,请参阅此链接有谁知道它是否按两个字段分组?
我在 controlFX 中使用 ToggleSwitch,这很棒。我想将颜色从默认的天蓝色更改为另一种颜色。我使用了 css 样式,但它改变了 ToggleSwitch 背后的背景。有没有办法自定义实际的开关?
这是我的 ToggleSwitch:
<ToggleSwitch styleClass="purple" text="No"/>
Run Code Online (Sandbox Code Playgroud)
这是我的造型:
.purple{
-fx-background-color: #57379b
}
Run Code Online (Sandbox Code Playgroud) 我尝试将以下样式应用于我的CheckBox
.check-box .box {
-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-white;
}
.check-box:selected .mark {
-fx-background-color: -fx-colour-white;
}
.check-box:selected .box {
-fx-background-color: -fx-blue;
}
Run Code Online (Sandbox Code Playgroud)
目的是要有一个带有灰色边框的白色复选框,并选中该复选框以使其具有蓝色背景和白色刻度。当我应用这些样式时,我会得到想要的结果。但是,执行以下步骤时会发生奇怪的事情:
1-单击复选框以选择
2-单击复选框以取消选择
复选框消失,并且仅当我在窗格中的其他位置单击时才会再次出现。
首次渲染然后选中该复选框时,您可以在下面看到该复选框的图像。