我正在寻找一种向JavaFX添加自动完成功能的方法ComboBox
.在搜索了很多之后,是时候在这里问了一下.
这AutoFillBox
是众所周知的,但不是我正在搜索的内容.我想要的是一个可编辑的组合框,输入列表时应该过滤掉.但是我也希望打开列表而不打字并查看整个项目.
任何的想法?
我无法弄清楚如何在JavaFX中创建模态窗口.基本上我有文件选择器,我想在用户选择文件时询问用户.我需要这些信息才能解析文件,因此执行需要等待答案.
我已经看到了这个问题但是我无法找到如何实现这个行为.
编写下面的代码后,我现在必须使用自定义的readObject()和writeObject()覆盖StudentData中的方法来读取和写入对象的变量.不使用defaultWriteObject或defaultReadObject方法来执行此操作.
麻烦的是我不完全理解被要求做什么.我已阅读序列化中的readObject/writeObject的使用,但我无法理解它.有人指出我正确的方向吗?
我的代码:
import java.io.*; //importing input-output files
class Student implements java.io.Serializable {
String name; // declaration of variables
String DOB;
int id;
Student(String naam, int idno, String dob) // Initialising variables to user
// data
{
name = naam;
id = idno;
DOB = dob;
}
public String toString() {
return name + "\t" + id + "\t" + DOB + "\t";
}
}
Run Code Online (Sandbox Code Playgroud)
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import …
Run Code Online (Sandbox Code Playgroud) 下面的代码片段给我错误Not on FX application thread; currentThread
= JavaFX
Application Thread
.这个应用程序在java 1.7中工作得很好但是当我把它移动到fx8时它现在给出了错误.当我在第一次尝试时启动应用程序时它正在按预期工作.但是在关闭舞台并再次打开它之后它无法正常工作.
错误也是模棱两可的.Not On fx application thread and current thread- javafx
application thread
如果当前线程是fx应用程序线程,那么它不是在fx应用程序线程上意味着什么.
progressDialog = createProgressDialog(service);
progressDialog.show();
progressDialog.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
// if (service.isRunning()) {
// service.cancel();
progressDialog.close();
// }
}
});
}
@SuppressWarnings("unchecked")
private Stage createProgressDialog(final Service<IStatus> service) {
stage = new Stage();
URL url = FileLocator.find(Activator.getDefault().getBundle(),
new Path("icons/xxx_16x16.png"), null); //$NON-NLS-1$
stage.getIcons().add(new Image(url.getFile()));
stage.setTitle("Downloading ..."); //$NON-NLS-1$
// Creating StackPane
stage.initModality(Modality.WINDOW_MODAL);
}
Run Code Online (Sandbox Code Playgroud) 我有一个方法来读取图像,转换它们(大小,格式)并将它们写回.这总是很好用,但现在我遇到了一些显然包含一些元数据(IPTC)的JPEG图像(来自新闻社).转换这些图像时,颜色都是错误的.我的第一个猜测是,那些是CMYK图像,但它们不是.
问题必须来自阅读,因为无论我是将图像转换为较小的JPEG还是PNG,它总是看起来一样.
起初,我曾经ImageIO.read()
读过这张照片.我现在得到实际的ImageReader
via ImageIO.getImageReadersByMIMEType()
并尝试告诉读者通过设置ignoreMetadata
参数ImageReader#setInput(Object input, boolean seekForwardOnly, boolean ignoreMetadata)
但忽略元数据但没有成功.
然后我创建了一个没有元数据的图像版本(使用Fireworks).该图像已正确转换.
我能找到的唯一区别是,对于未工作的图像,读者变量的colorSpaceCode
值为2,而对于工作图像,值为3.还有一个outColorSpaceCode
是2两个图像.
由于读者的源评论仅表示Set by setImageData本机代码回调.一个修改过的IJG + NIFTY颜色空间代码我现在真的被卡住了.所以任何帮助将不胜感激.
您可以通过此处并单击下载来获取原始图像(~3 MB).下图左侧显示了我从原始图像中获得的内容,右侧显示了它应该是什么样子.
我对Java,JavaFX和一般的编程有点新意,我有一个问题正在打破我的大脑.
在大多数关于填充ListView的教程中(更具体地说,使用ObservableArrayList),最简单的方法是从字符串的ObservableList中创建它,如下所示:
ObservableList<String> wordsList = FXCollections.observableArrayList("First word","Second word", "Third word", "Etc.");
ListView<String> listViewOfStrings = new ListView<>(wordsList);
Run Code Online (Sandbox Code Playgroud)
但我不想使用字符串.我想使用一个名为Words的自定义对象:
ObservableList<Word> wordsList = FXCollections.observableArrayList();
wordsList.add(new Word("First Word", "Definition of First Word");
wordsList.add(new Word("Second Word", "Definition of Second Word");
wordsList.add(new Word("Third Word", "Definition of Third Word");
ListView<Word> listViewOfWords = new ListView<>(wordsList);
Run Code Online (Sandbox Code Playgroud)
每个Word对象只有2个属性:wordString(单词的一个字符串)和definition(另一个字符串,即单词的定义).我两个都有吸气剂和二传手.
您可以看到它的位置 - 代码编译和工作,但是当我在我的应用程序中显示它时,它不会显示ListView中每个单词的标题,而是将Word对象本身显示为字符串!
我的问题是,具体来说,有一种简单的方法可以重写这个:
ListView<Word> listViewOfWords = new ListView<>(wordsList);
Run Code Online (Sandbox Code Playgroud)
这样一来,它不是直接从wordsList中获取Words,而是访问我的observableArrayList的每个Word中的wordString属性?
为了清楚起见,这不适用于android,并且最终将更改,保存和加载单词列表,因此我不能只创建另一个数组来保存wordStrings.我在网上做了一些研究,似乎有一个名为'Cell Factories'的东西,但对于看起来如此简单的问题似乎不必要的复杂,正如我之前所说,我有点编程方面的新手.
有人可以帮忙吗?这是我第一次来这里,所以如果我没有包含足够的代码或者我做错了,我很抱歉.
我正在尝试从javafx在默认系统浏览器中打开一个Web URL.我没有找到任何关于此的官方文件.任何线索?
编辑:我找到了一个教程,但它不起作用.我正在使用MacOsX,我尝试启动
java.awt.Desktop.getDesktop().browse(new URI(url));
Run Code Online (Sandbox Code Playgroud)
但是我得到了 HeadlessExcelption
我在Eclipse中跟随两个导入时收到错误:
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
Run Code Online (Sandbox Code Playgroud)
错误是:" 导入javafx.scene.control.Alert无法解析 ",第二个import语句也是如此.
我正在使用Eclipse版本:Luna Service Release 2(4.4.2)并安装了最新JDK 1.8(1.8.0_45)的e(fx)clipse.
其他与javafx相关的import语句没有问题,例如
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.input.MouseEvent;
Run Code Online (Sandbox Code Playgroud)