我最近正在阅读 Unobtrusive javascript 并决定试一试。我是否决定使用这种风格将在以后确定。这只是为了我自己的好奇心,而不是任何有时间限制的项目。
现在,我正在查看示例代码,很多示例似乎都在使用,这让我永远发现了 jQuery。他们使用像 $('class-name').whatever(...); 这样的函数。
好吧,我更喜欢 $('class').function 的外观,所以我尝试在不使用 jQuery 的情况下模拟它(因为我不知道 jQuery 并且不关心它 atm)。但是,我无法使这个示例工作。
这是我的 jsFiddle:http : //jsfiddle.net/dethnull/K3eAc/3/
<!DOCTYPE html>
<html>
<head>
<title>Unobtrusive Javascript test</title>
<script>
function $(id) {
return document.getElementById(id);
}
$('tester').onclick(function () {
alert('Hello world');
});
</script>
<style>
.styled {
width: 200px;
margin-left: auto;
margin-right: auto;
font-size: 2em;
}
a {
cursor: pointer;
color: blue;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class='styled'>
<ul>
<li><a id='tester'>CLICK ME</a></li>
</ul>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我原以为当您单击链接时会弹出一个警告框,但似乎没有发生。在 …
好的,我有一个ListView对象.我正在使用它作为我的服务器的一种控制台窗口.这是我能想到的唯一一种在这样的盒子中显示彩色文本的方法.到目前为止,这项工作很精彩.现在我想要做的是在一个索引或行上为不同的文本着色.
例:
listView[0] = "Hello " + "world";
Run Code Online (Sandbox Code Playgroud)
其中" Hello "为绿色," world "为蓝色.如果这可以用usine javafx文本或任何其他方式我想知道如何去做.我使用Javafx Text作为主要元凶,因为你可以用它自定义这么多.
我希望每个人都能理解我在这里要做的事情,如果没有,请告诉我,我会尝试重新改写一下.
解
感谢jewelsea,我能够找到解决方案.我采用了一种不同的方法,而不是使用cellfactory.
列表显示
ListView<FlowPane> consoleWindow = new ListView<>();
ArrayList<FlowPane> consoleBuffer = FXCollections.observableArrayList();
consoleWindow.setItems(consoleBuffer);
inputBox.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
if (keyEvent.getCode() == KeyCode.ENTER) {
consoleBuffer.add(parseInput.parseInputToArray(inputBox.getText()));
}
consoleWindow.scrollTo(consoleBuffer.size());
}
});
Run Code Online (Sandbox Code Playgroud)
ConsoleInputParse:
public class ConsoleInputParse {
private String[] wordList = {};
public ConsoleInputParse() {}
public FlowPane parseInputToArray(String input) {
wordList = input.trim().split("[ ]+");
return colorize();
}
public FlowPane colorize() {
ArrayList<Text> textChunks …
Run Code Online (Sandbox Code Playgroud) 好的,我已经创建了自己的客户标签,对于这个示例,它非常基础。我所做的是在名为 MyLabel 的自定义类中扩展 Javafx Label。我还使用 FXML 来创建 GUI。现在,当我这样做时,由于出现此错误,我似乎无法使用自定义类进行实例化。
"Can not set net.blacksquirreldevs.tests.MyLabel field net.blacksquirreldevs.tests.SampleLabelController.sampleLabel to javafx.scene.control.Label"
Run Code Online (Sandbox Code Playgroud)
这是所有内容的代码
主程序
package net.blacksquirreldevs.tests;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("SampleLabel");
AnchorPane anchorPane = (AnchorPane) FXMLLoader.load(getClass().getResource("SampleLabel.fxml"));
primaryStage.setScene(new Scene(anchorPane));
primaryStage.show();
}
public static void main(String... args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
我的标签
package net.blacksquirreldevs.tests;
import javafx.scene.control.Label;
public class MyLabel extends Label {
public MyLabel(String text) {
super();
setText(text); …
Run Code Online (Sandbox Code Playgroud) 我不太确定这个叫什么,所以很难查找它,如果我告诉你我正在尝试做什么,那就最好了.
我想创建一个conodional变量
String fileName = (if (this.filename != null) { return this.filename; }
else { return "default value"; });
Run Code Online (Sandbox Code Playgroud)
这应该非常清楚我正在尝试做什么.我想使用某种条件来根据另一个变量输入设置这个变量,在这种情况下它是否等于null.