想在javafx-labels(以及其他标记的控件(最坏情况:图像))中显示数学公式
以下示例显示了确切的设置。该公式以LaTeX代码和MathML(由SnuggleTeX转换)给出。
为了让标签通过呈现LaTeX或MathML代码来显示公式,任何人都可以帮助进展吗?
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;
public class TestRM extends Application{
private Stage window;
private Scene scene;
private String string1 = new String("\\frac{-b \\pm \\sqrt{b^2-4ac {2a}");
private String string2 = new String("<math xmlns=\"http://www.w3.or/1998/Math/MathML\" display=\"block\">\r\n" +
" <semantics>\r\n" +
" <mfrac>\r\n" +
" <mrow>\r\n" +
" <mo>-</mo>\r\n" +
" <mi>b</mi>\r\n" +
" <mo>±</mo>\r\n" +
" <msqrt>\r\n" +
" <mrow>\r\n" +
" <msup>\r\n" +
" <mi>b</mi>\r\n" +
" <mn>2</mn>\r\n" +
" </msup>\r\n" +
" <mo>-</mo>\r\n" +
" <mn>4</mn>\r\n" +
" <mi>a</mi>\r\n" +
" <mi>c</mi>\r\n" +
" </mrow>\r\n" +
" </msqrt>\r\n" +
" </mrow>\r\n" +
" <mrow>\r\n" +
" <mn>2</mn>\r\n" +
" <mi>a</mi>\r\n" +
" </mrow>\r\n" +
" </mfrac>\r\n" +
" <annotation encoding=\"SnuggleTeX\">$$ \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a} $$</annotation>\r\n" +
" </semantics>\r\n" +
"</math>");
private Label lb1 = new Label(string1);
private Label lb2 = new Label(string2);
VBox vbox = new VBox(lb1,lb2);
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) {
window = primaryStage;
scene = new Scene(vbox, 300, 700);
window.setScene(scene);
window.show();
}
}
@ScientificWare:
发布于 2018-09-20 09:54:34
以下代码可以帮助您完成任务,如果只想显示MathML,只需使用WebView控件即可。
如果你想编辑它;-) ...你可以使用HTMLEditor控件。请注意,MathML编辑无法正常工作
如果你有Java,C ++或JavaScript技能,那么你也可以尝试改进它,如果你有兴趣建立一个社区
JavaFX / OpenJFX自2011年以来一直支持MathML。但是一个小错误打破了它。
由于用户兴趣或反馈很少,这个问题在2018年之前对维护者来说是低优先级的。但是,感谢有关JavaFX的新Oracle路线图,OpenJFX团队为我提供了一些帮助,并提供了一些帮助来集成我的补
现在,似乎Oracle将把JavaFX交给Gluon,所以我鼓励你给他们反馈,以表明你对MathML支持或数学编辑的兴趣,并保留MathML支持。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;
public class TestRM extends Application {
private Stage window;
private Scene scene;
private WebView webView = new WebView();
String javaversion = "Version de Java.. : " + System.getProperty("java.runtime.version");
String javafxversion = "Version de JavaFX : " + System.getProperty("javafx.runtime.version");
String osinfo = "OS .............. : " + System.getProperty("os.name");
String osarch = "CPU ............. : " + System.getProperty("os.arch");
String agent = "User Agent ...... : " + webView.getEngine().getUserAgent();
private String string2 = new String(""
+ "<p>"
+ "<math xmlns=\"http://www.w3.or/1998/Math/MathML\" display=\"block\">"
+ " <semantics>"
+ " <mfrac>"
+ " <mrow>"
+ " <mo>-</mo>"
+ " <mi>b</mi>"
+ " <mo>±</mo>"
+ " <msqrt>"
+ " <mrow>"
+ " <msup>"
+ " <mi>b</mi>"
+ " <mn>2</mn>"
+ " </msup>"
+ " <mo>-</mo>"
+ " <mn>4</mn>"
+ " <mi>a</mi>"
+ " <mi>c</mi>"
+ " </mrow>"
+ " </msqrt>"
+ " </mrow>"
+ " <mrow>"
+ " <mn>2</mn>"
+ " <mi>a</mi>"
+ " </mrow>"
+ " </mfrac>"
+ " <annotation encoding=\"SnuggleTeX\">$$ \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a} $$</annotation>"
+ " </semantics>"
+ "</math>"
+ "</p>"
+ "<p>" + javafxversion + "</p>"
+ "<p>" + javaversion + "</p>"
+ "<p>" + osinfo + "</p>"
+ "<p>" + osarch + "</p>"
+ "<p>" + agent + "</p>");
VBox vbox = new VBox(webView);
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) {
webView.getEngine().loadContent(string2);
window = primaryStage;
scene = new Scene(vbox, 400, 300);
window.setScene(scene);
window.show();
}
}
HTMLEditor
是基于WebView
,只添加一个工具栏WebView,
适用于许多Web浏览器,而WebView“只是”一个WebKit端口。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebView;
public class TestRM extends Application {
private Stage window;
private Scene scene;
private WebView webView = new WebView();
String javaversion = "Version de Java.. : " + System.getProperty("java.runtime.version");
String javafxversion = "Version de JavaFX : " + System.getProperty("javafx.runtime.version");
String osinfo = "OS .............. : " + System.getProperty("os.name");
String osarch = "CPU ............. : " + System.getProperty("os.arch");
String agent = "User Agent ...... : " + webView.getEngine().getUserAgent();
private String string2 = new String(""
+ "<html>"
+ "<head>"
+ "<title>TestRM</title>"
+ "</head>"
+ "<body>"
+ "<p contenteditable=\"true\">"
+ "<math xmlns=\"http://www.w3.or/1998/Math/MathML\" display=\"block\">"
+ " <semantics>"
+ " <mfrac>"
+ " <mrow>"
+ " <mo>-</mo>"
+ " <mi>b</mi>"
+ " <mo>±</mo>"
+ " <msqrt>"
+ " <mrow>"
+ " <msup>"
+ " <mi>b</mi>"
+ " <mn>2</mn>"
+ " </msup>"
+ " <mo>-</mo>"
+ " <mn>4</mn>"
+ " <mi>a</mi>"
+ " <mi>c</mi>"
+ " </mrow>"
+ " </msqrt>"
+ " </mrow>"
+ " <mrow>"
+ " <mn>2</mn>"
+ " <mi>a</mi>"
+ " </mrow>"
+ " </mfrac>"
+ " <annotation encoding=\"SnuggleTeX\">$$ \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a} $$</annotation>"
+ " </semantics>"
+ "</math>"
+ "</p>"
+ "<p>" + javafxversion + "</p>"
+ "<p>" + javaversion + "</p>"
+ "<p>" + osinfo + "</p>"
+ "<p>" + osarch + "</p>"
+ "<p>" + agent + "</p>")
+ "</body>"
+ "</html> ";
VBox vbox = new VBox(webView);
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) {
webView.getEngine().loadContent(string2);
window = primaryStage;
scene = new Scene(vbox, 400, 300);
window.setScene(scene);
window.show();
}
}
https://stackoverflow.com/questions/-100002701
复制相似问题