这有点奇怪,或者我的代码可能有问题.
我正在设置JavaFX应用程序ICON,它在Windows系统上非常清晰可见,但在Ubuntu上却没有.
在Windows上:

在Ubuntu上:

对此背后的原因有任何想法.
代码示例:
@Override
public void start(Stage stage) throws Exception {
try {
setUserAgentStylesheet(STYLESHEET_MODENA);
FXMLLoader loader = new FXMLLoader();
Parent root = (Parent) loader.load(getClass().getResourceAsStream("ui/ParentWindow.fxml"));
final ParentWindowController controller = (ParentWindowController) loader.getController();
stage.addEventHandler(WindowEvent.WINDOW_SHOWN, controller::handleWindowShownEvent);
stage.addEventHandler(WindowEvent.WINDOW_SHOWING, controller::handleWindowShowingEvent);
stage.addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, controller::handleWindowClosingRequestedEvent);
Scene scene = new Scene(root);
scene.getStylesheets().setAll(
getClass().getResource("ui/css/ParentWindow.css").toExternalForm()
);
stage.setScene(scene);
stage.initStyle(StageStyle.UNIFIED);
stage.setResizable(false);
stage.toFront();
stage.setTitle("Simple JavaFX Tool");
stage.getIcons().add(new Image(getClass().getResourceAsStream("resources/images/icon.jpg")));
stage.show();
} catch (IOException iOException) {
iOException.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种适当而强大的方法来从独立于任何OS平台中查找和替换所有newline或breakline字符.String\n
这是我尝试过的,但并没有真正奏效.
public static String replaceNewLineChar(String str) {
try {
if (!str.isEmpty()) {
return str.replaceAll("\n\r", "\\n")
.replaceAll("\n", "\\n")
.replaceAll(System.lineSeparator(), "\\n");
}
return str;
} catch (Exception e) {
// Log this exception
return str;
}
}
Run Code Online (Sandbox Code Playgroud)
例:
输入字符串:
This is a String
and all newline chars
should be replaced in this example.
Run Code Online (Sandbox Code Playgroud)
预期输出字符串:
This is a String\nand all newline chars\nshould be replaced in this example.
Run Code Online (Sandbox Code Playgroud)
但是,它返回相同的输入String.就像它放置\n并再次将其解释为Newline.请注意,如果您想知道为什么会有人想要\n,那么用户特别要求将字符串放在XML后面.
在要格式化的字符串中(主要用于替换具有不同符号的字符以便在UI上进行渲染测试),我必须检测%,然后从此%char中跳过所有字符util第一个空格,并且必须对字符串中的所有实例重复该字符.
例如 abcd%1$s efgh %2$d ijkl.在这个字符串中,我必须获得%的索引,然后从中找到第一个空格的索引.基本上,我必须跳过这个%1$s和%2$d某些格式化占位符.我希望,我不是在这里以复杂的方式.
我正在尝试使用Apache Poi 将ResultSet写入Excel(*.xlsx)表.
Office Excel中的表对象错误无效
但是,即使它写入Excel文件没有任何错误,当我尝试在Office Excel 2013中打开它时,它会显示错误并删除表对象以仅提供纯数据视图.


以下是使用此示例的粗略示例代码:
public static void writeExcel(ResultSet rs, int sqliteRowCount, String dir) {
System.out.println("Writing Excel(*.xlsx) File...");
XSSFWorkbook workbook = null;
try {
if (rs != null) {
// Get ResultSet MetaData
ResultSetMetaData rsmd = rs.getMetaData();
// Number of columns
int numColumns = rsmd.getColumnCount();
// Number of rows
// + 1 for headers
int numRows = sqliteRowCount + 1;
workbook = new XSSFWorkbook();
// Create Excel Table
XSSFSheet sheet …Run Code Online (Sandbox Code Playgroud) 我们如何获得Excel中列中最后一个空单元格的数字/索引.
我尝试了CountA和其他几个但是它返回非空单元格的数量,或者假设在实际数据之后有一个单元格在其中有一些空格,UsedRange返回到该单元格的范围.
我需要的是列中的最后一个非空单元格,其中该列可能在其间具有空单元格.使用该列中的最后一个空单元格,我可以指定要考虑使用的最后一行.
我们如何逐行读取特定文件,同时跳过其中的某些列?
例如,我有一个文本文件,其中有数据,分为5列,但我只需要读取两列,它们可以是前两个或任何其他随机组合(我的意思是,需要一个可行的解决方案)与任何列的组合,如第一和第三列).
代码是这样的
open(1, file=data_file)
read (1,*) ! to skip first line, with metadata
lmax = 0
do while (.true.)
! read column 1 and 3 here, either write
! that to an array or just loop through each row
end do
99 continue
close (1)
Run Code Online (Sandbox Code Playgroud)
任何解释或示例都会有所帮助.
我想将所有文件和子目录(包括文件)移动到同一文件夹的另一个子目录中。
例如,我有一个名为 abcd 的文件夹,里面有一个文件 aa 和子文件夹 bb、cc、dd。所以我想在与 abcd\backup 相同的文件夹中创建另一个子目录,并将 aa、bb、cc、dd 即所有文件和文件夹移动到备份文件夹。
我想根据屏幕及其分辨率更改表单大小.
我想要的是一个正确的事件来跟踪这些屏幕更改以及运行时的屏幕分辨率更改.
换一种说法,
如果用户正在使用两个屏幕并将应用程序移动到另一个屏幕,则应对其进行跟踪并相应地更改大小,即如果新屏幕的分辨率较低则减小尺寸,或者如果分辨率较大则增大尺寸.
还可以在同一屏幕上跟踪屏幕分辨率更改,并相应地更改大小.
我知道如何更改表单大小,获取当前屏幕及其分辨率,只需要这些事件来跟踪这些更改.
作为一个特殊的要求,我一直在试图逃跑"用\"在写XML使用DOM.
不幸的是,当我写文本时Document.createTextNode(TextValue),它会输出\".但是,预期的是\"
细节:
写文本值:
public static boolean setDOMElementValue(Document doc, Element elem, String nodeValue) {
try {
elem.appendChild(doc.createTextNode(nodeValue));
return true;
} catch (DOMException ex) {
LOG.log(Level.SEVERE, ex.toString());
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
编写XML:
public static boolean writeDOMToXML(Document doc, String xmlFilePath) {
try {
doc.setXmlStandalone(true);
// write content into xml file
// Creating TransformerFactory and Transformer
Transformer tr = TransformerFactory.newInstance().newTransformer();
// Setting Transformer's output properties
tr.setOutputProperty(OutputKeys.INDENT, "yes");
tr.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
tr.setOutputProperty(OutputKeys.METHOD, …Run Code Online (Sandbox Code Playgroud) 在开发一个简单的 Windows 窗体 UI 应用程序时,我试图创建一个效果来显示和关闭鼠标事件的下拉列表。
就像我可以打开的下拉MouseMove通过设置事件comboBox.DroppedDown = true;
然而,当我设置此相同的是不工作comboBox.DroppedDown = false;的MouseLeave情况下将其关闭。
不知道这里到底需要做什么。问题在于MouseLeave下拉列表不会失去焦点,因此除非您从列表中选择一项,否则它不会关闭。它等待用户从列表中选择一个项目。如果它可以失去焦点MouseLeave,就会起作用。请提出任何建议。