我正在为我的应用程序使用库 Apache-POI。具体来说,POIshadow-all (ver. 3.17) 用于阅读 Word 文档。我成功地提取了每个段落,如下所示:
我真正需要的是提取每一行,如下所示:
提取每个段落的代码是这样的:
try {
val fis = FileInputStream(path.path + "/" + document)
val xdoc = XWPFDocument(OPCPackage.open(fis))
val paragraphList: MutableList<XWPFParagraph> = xdoc.paragraphs
private val newParagraph = paragraph.createRun()
...
for (par in paragraphList) {
var currentParagraph = par.text
Log.i("TAG","current: $currentParagraph")
...
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,变量 currentParagraph 返回整个段落。但是,我需要一个名为 currentLine 的变量,它返回一行。
我在 stackoverflow 和其他网站上研究过这个问题。我找到了一些建议,但没有一个适合我。我还尝试通过 ctr 和使用 XWPFRun 获取日期,但没有成功。
对于如何进行的任何建议,我将不胜感激。
在此先感谢您的帮助。
我正在使用JavaFX通过鼠标拖动来移动3D立方体。立方体应停留在x和z轴所跨的平面上。我的解决方案效果很好,但是,如果我用鼠标将多维数据集移动得太快,或者当它遇到具有特定深度(y轴)的对象时,则假定鼠标在y轴和多维数据集上移动开始向前或向后跳跃。有没有一种方法可以将鼠标限制在xz平面上?一个更复杂的解决方案是将y长度投影回xz平面,但是我不知道该怎么做。我看了看JavaFX Moving 3D Objects,但是无法适应我的情况。
到目前为止,我的代码:
private volatile double relMousePosX;
private volatile double relMousePosZ;
public void enableDragMove(PaneBox paneBox) {
Group paneBoxGroup = paneBox.get();
paneBoxGroup.setOnMousePressed((MouseEvent me) -> {
if(isSelected(paneBox) && MouseButton.PRIMARY.equals(me.getButton())) {
relMousePosX = me.getX();
relMousePosZ = me.getZ();
}
});
paneBoxGroup.setOnMouseDragged((MouseEvent me) -> {
if(paneBoxGroup.focusedProperty().get() && MouseButton.PRIMARY.equals(me.getButton())) {
setDragInProgress(paneBox, true);
System.out.println(me.getY()); // should stay small value, but jumps to higher values at times, creating the problem.
paneBoxGroup.setCursor(Cursor.MOVE);
paneBox.setTranslateX(paneBox.getTranslateX() + (me.getX() - relMousePosX));
paneBox.setTranslateZ(paneBox.getTranslateZ() + (me.getZ() - relMousePosZ));
}
});
paneBoxGroup.setOnMouseReleased((MouseEvent …Run Code Online (Sandbox Code Playgroud) 对于我的项目,我需要3D场景中的2D文本(而不是叠加!).所以我尝试在场景中添加BorderPanewith Label/ Textnodes:

然而问题是,当我用相机放大,缩小或飞行时,面板的白色背景有时与标签重叠(它们显然具有相同的深度).
有没有办法从其面板"提升"标签?我试过设置setDepthTest(true);没有效果.
这是一个显示问题的简单示例.该Xform课程来自Oracle的分子样本(http://docs.oracle.com/javase/8/javafx/graphics-tutorial/sampleapp3d-code.htm#CJAGGIFG):
package mypackage;
import mypackage.Xform;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class Example extends Application {
private Stage primaryStage;
private final Group root = new Group();
@Override
public void start(Stage primaryStage) throws Exception {
this.primaryStage = primaryStage;
primaryStage.setTitle("Example");
this.primaryStage.setWidth(500);
this.primaryStage.setHeight(500);
Scene scene = new Scene(this.root, 500, 500, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.WHITESMOKE);
Text text …Run Code Online (Sandbox Code Playgroud)