回答
它不能根据this官方教程似乎。
格式化工具栏在 组件的实现中提供。您无法切换其可见性。但是,您仍然可以通过应用CSS样式自定义编辑器的外观...
如果使用不支持的方法,您可以非常容易地自定义工具栏。
正如他的回答Uluk状态,下面的方法不正式支持。
import java.util.regex.Pattern;
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.image.ImageView;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;
public class HTMLEditorSample extends Application {
public static void main(String[] args) { launch(args); }
@Override public void start(Stage stage) {
final HTMLEditor htmlEditor = new HTMLEditor();
stage.setScene(new Scene(htmlEditor));
stage.show();
hideImageNodesMatching(htmlEditor, Pattern.compile(".*(Cut|Copy|Paste).*"), 0);
Node seperator = htmlEditor.lookup(".separator");
seperator.setVisible(false); seperator.setManaged(false);
}
public void hideImageNodesMatching(Node node, Pattern imageNamePattern, int depth) {
if (node instanceof ImageView) {
ImageView imageView = (ImageView) node;
String url = imageView.getImage().impl_getUrl();
if (url != null && imageNamePattern.matcher(url).matches()) {
Node button = imageView.getParent().getParent();
button.setVisible(false); button.setManaged(false);
}
}
if (node instanceof Parent)
for (Node child : ((Parent) node).getChildrenUnmodifiable())
hideImageNodesMatching(child, imageNamePattern, depth + 1);
}
}
如果有人真的想使用不支持的方法来隐藏工具栏则是实现这一目标(我没有测试过,如果这导致在HTML编辑控制的任何问题,所以在使用这种更简单的方法你个人风险)。
package htmleditorsample;
import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;
public class HTMLEditorSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
final HTMLEditor htmlEditor = new HTMLEditor();
primaryStage.setScene(new Scene(htmlEditor));
primaryStage.show();
for (Node toolBar = htmlEditor.lookup(".tool-bar"); toolBar != null; toolBar = htmlEditor.lookup(".tool-bar")) {
((Pane) toolBar.getParent()).getChildren().remove(toolBar);
}
}
}
当我试着你的代码(JavaFX 8),我得到了[这个NullPointerException](https://gist.github.com/ TurekBot/fe936bd51ac4c7d0dfd1586e7be02086)。 – 2017-12-01 00:17:32
.tool-bar
{
/*-fx-visibility:hidden;
-fx-display:none; */
-fx-opacity: 0;
}
不透明性工作,但菜单保持活动状态。
我已经做了一些修改HTML编辑器的功能(以获得它的简约版本),也许别人可能也想使用它。
验证码:
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import com.sun.javafx.scene.web.skin.PopupButton;
public class HTMLEditorModifyer extends Application {
public static void main(String[] args) { launch(args); }
@Override public void start(Stage stage) {
final HTMLEditor htmlEditor = new HTMLEditor();
stage.setScene(new Scene(htmlEditor));
stage.setWidth(300);
stage.setHeight(200);
stage.show();
addCustomToolBarTo(htmlEditor);
printChildren(htmlEditor, 20);
moveFromTo(htmlEditor, "PopupButton", 0, "ToolBar", 2);
moveFromTo(htmlEditor, "PopupButton", 1, "ToolBar", 2);
moveFromTo(htmlEditor, "Separator", 4, "ToolBar", 2);
moveFromTo(htmlEditor, "ComboBox", 2, "ToolBar", 2);
moveFromTo(htmlEditor, "Separator", 5, "ToolBar", 2);
moveFromTo(htmlEditor, "ToggleButton", 6, "ToolBar", 2);
moveFromTo(htmlEditor, "ToggleButton", 7, "ToolBar", 2);
moveFromTo(htmlEditor, "ToggleButton", 8, "ToolBar", 2);
removeFrom(htmlEditor, "ToolBar", 1);
removeFrom(htmlEditor, "ToolBar", 0);
//printChildren(htmlEditor, 20);
}
public void moveFromTo(HTMLEditor he, String t, int c, String t2, int c2)
{
Node nCb = new Button(); //just has to be sth.
//Copy From:
int i = 0;
switch(t)
{
case "PopupButton":
for (Node candidate: (he.lookupAll("PopupButton")))
{
if (candidate instanceof PopupButton)
{
PopupButton cb = (PopupButton) candidate;
if (i == c)
{
nCb = cb;
break;
}
}
i++;
}
break;
case "Separator":
for (Node candidate: (he.lookupAll("Separator")))
{
if (candidate instanceof Separator)
{
Separator cb = (Separator) candidate;
if (i == c)
{
nCb = cb;
break;
}
}
i++;
}
break;
case "ComboBox":
for (Node candidate: (he.lookupAll("ComboBox")))
{
if (candidate instanceof ComboBox)
{
ComboBox cb = (ComboBox) candidate;
if (i == c)
{
nCb = cb;
break;
}
}
i++;
}
break;
case "ToggleButton":
for (Node candidate: (he.lookupAll("ToggleButton")))
{
if (candidate instanceof ToggleButton)
{
ToggleButton cb = (ToggleButton) candidate;
if (i == c)
{
nCb = cb;
break;
}
}
i++;
}
break;
}
//Copy To:
i = 0;
switch(t2)
{
case "ToolBar":
for (Node candidate: (he.lookupAll("ToolBar")))
{
if (candidate instanceof ToolBar)
{
ToolBar cb2 = (ToolBar) candidate;
if (i == c2)
{
cb2.getItems().add(nCb);
break;
}
}
i++;
}
break;
}
}
public void removeFrom(HTMLEditor he, String t, int c)
{
int i = 0;
switch(t)
{
case "ToolBar":
for (Node candidate: (he.lookupAll("ToolBar")))
{
if (candidate instanceof ToolBar)
{
ToolBar cb = (ToolBar) candidate;
if (i == c)
{
Node nCb = cb;
((Pane) nCb.getParent()).getChildren().remove(nCb);
break;
}
}
i++;
}
break;
case "PopupButton":
for (Node candidate: (he.lookupAll("PopupButton")))
{
if (i == c)
{
Node nCb = candidate;
nCb.setVisible(false); nCb.setManaged(false);
break;
}
i++;
}
break;
case "ToggleButton":
for (Node candidate: (he.lookupAll("ToggleButton")))
{
if (candidate instanceof ToggleButton)
{
ToggleButton cb = (ToggleButton) candidate;
if (i == c)
{
Node nCb = cb;
nCb.setVisible(false); nCb.setManaged(false);
break;
}
}
i++;
}
break;
case "Separator":
for (Node candidate: (he.lookupAll("Separator")))
{
if (candidate instanceof Separator)
{
Separator cb = (Separator) candidate;
if (i == c)
{
Node nCb = cb;
nCb.setVisible(false); nCb.setManaged(false);
break;
}
}
i++;
}
break;
case "Button":
for (Node candidate: (he.lookupAll("Button")))
{
if (candidate instanceof Button)
{
Button cb = (Button) candidate;
if (i == c)
{
Node nCb = cb;
nCb.setVisible(false); nCb.setManaged(false);
break;
}
}
i++;
}
break;
case "ComboBox":
for (Node candidate: (he.lookupAll("ComboBox")))
{
if (candidate instanceof ComboBox)
{
ComboBox cb = (ComboBox) candidate;
if (i == c)
{
Node nCb = cb;
nCb.setVisible(false); nCb.setManaged(false);
break;
}
}
i++;
}
break;
}
}
public void printChildren(HTMLEditor he, int MAXDEPTH)
{
System.out.println("Print Children ==========>>>>");
String[] hieraArray = new String[MAXDEPTH];
int maxDepth = 0;
int lastDepth = 0;
Node parent;
/* List all elements of the HTMLeditor */
for (Node element: (he.lookupAll("*")))
{
parent = element.getParent();
if (maxDepth == 0)
{
hieraArray[0] = element.getClass().getSimpleName().toString();
System.out.print(hieraArray[0]);
System.out.println("");
maxDepth = 1;
}
else
{
int i = 0, i2 = 0;
boolean found = false;
for(i=maxDepth; i>=0; i--)
{
if (hieraArray[i] == null || parent.getClass().getSimpleName() == null) continue;
if (hieraArray[i].equals(parent.getClass().getSimpleName()))
{
for (i2 = 0; i2 <= i; i2++)
{
System.out.print("|");
}
if ((Math.abs(lastDepth-i2)) > 2) System.out.print("->" + element.getClass().getSimpleName() + " {p: " + parent.getClass().getSimpleName() + "}");
else System.out.print("->" + element.getClass().getSimpleName());
//if (element.getClass().getSimpleName().equals("PopupButton")) System.out.print(" ??: " + element + " ::: " + element.getClass());
lastDepth = i2;
hieraArray[(i+1)] = element.getClass().getSimpleName();
if (maxDepth < (i+1)) maxDepth = (i+1);
found = true;
System.out.println("");
break;
}
}
if (found == false)
{
hieraArray[(i+1)] = parent.getClass().getSimpleName();
if (maxDepth < (i+1)) maxDepth = (i+1);
}
if ((maxDepth+1) >= MAXDEPTH)
{
System.out.println("MAXDEPTH reached! increase ArraySize!");
return;
}
}
}
}
public ToolBar addCustomToolBarTo(HTMLEditor he)
{
/* Thers one GridPane to the HTMLEditor where we add the ToolBar */
ToolBar customTB = new ToolBar();
for (Node candidate: (he.lookupAll("GridPane")))
{
if (candidate instanceof GridPane)
{
((GridPane) candidate).getChildren().add(customTB);
break;
}
}
return customTB;
}
}
不为我工作 – Developer66 2017-09-04 08:38:17
public static void hideHTMLEditorToolbars(final HTMLEditor editor)
{
editor.setVisible(false);
Platform.runLater(new Runnable()
{
@Override
public void run()
{
Node[] nodes = editor.lookupAll(".tool-bar").toArray(new Node[0]);
for(Node node : nodes)
{
node.setVisible(false);
node.setManaged(false);
}
editor.setVisible(true);
}
});
}
这一个好,因为你[甚至不能告诉(https://i.imgur.com/pNOXUGS.png)工具栏在那里一次。 – 2017-12-01 00:20:47
您应该能够从它的工具栏隐藏按钮,甚至是删除它们。
我会做这种方式:
final Map map = new HashMap();
for (Node candidate: (htmlEditor.lookupAll("ToolBar"))) {
List list = ((ToolBar) candidate).getItems();
for (int i = 0; i < list.size(); i++) {
Node b = (Node) list.get(i);
map.put(map.size() + 1, b);
}
}
// So we've fetch all buttons (including separators) and assigned
// each an index number. Now then to hide an item:
((Node) map.get(2)).setVisible(false); // Hides copy button
((Node) map.get(13)).setVisible(false); // Hides bullets button
// Or to just completely remove them:
map.remove(18); // Removes font-menu-button
map.remove(25); // Removes editor-strike button
试试这个:
.html-editor .top-toolbar
{
-fx-max-width: 0px;
\t -fx-min-width: 0px;
\t -fx-pref-width: 0px;
\t -fx-max-height: 0px;
\t -fx-min-height: 0px;
\t -fx-pref-height: 0px;
-fx-opacity: 0;
}
.html-editor .bottom-toolbar
{
-fx-max-width: 0px;
\t -fx-min-width: 0px;
\t -fx-pref-width: 0px;
\t -fx-max-height: 0px;
\t -fx-min-height: 0px;
\t -fx-pref-height: 0px;
-fx-opacity: 0;
}
- 1. 如何隐藏GridView中的编辑列?
- 2. 如何最初隐藏wmd编辑器?
- 3. 如何隐藏Liferay的控制面板
- 4. 如何隐藏MPmoviePlayerController的控制栏
- 5. 如何通过代码隐藏为gridview编辑编辑按钮?
- 6. 如何使用科莫多编辑隐藏科莫多编辑
- 7. 如何在VBA中隐藏行不可编辑/可复制?
- 8. 编辑隐藏页脚Wordpress
- 9. LinkedIn隐藏/编辑短URL
- 10. 隐藏在文本编辑
- 11. 如何隐藏控制台窗口
- 12. 如何隐藏控制台窗口?
- 13. 如何在cakrphp中隐藏控制器
- 14. 如何隐藏红隼控制台?
- 15. 如何隐藏cmd.exe控制台?
- 16. 如何在WMD编辑器中控制允许的HTML标签?
- 17. 优雅的编码,如何处理隐藏/隐藏的HTML代码?
- 18. Sitecore如何从你的富文本编辑器中隐藏/禁用HTML标签
- 19. 如何隐藏HTML标签?
- 20. 如何隐藏html div
- 21. 如何隐藏回答HTML
- 22. 运行控制台隐藏
- 23. Javascript中隐藏控制Repeater
- 24. 隐藏控制台窗口
- 25. 隐藏HTML5视频控制
- 26. CodeIgniter - 隐藏控制器
- 27. c#,隐藏“控制箱”,winforms
- 28. 隐藏控制台窗口
- 29. Boost :: windows隐藏控制台
- 30. Html.EditorForModel和编辑中的隐藏元素
在JavaFX 8,可悲的是,这并不似乎工作。 – 2017-12-01 00:23:42
@Brad Turek看到我的答案在这里:https://stackoverflow.com/a/48439161/2173392 – pdem 2018-01-25 09:20:37