![](/img/trans.png)
[英]How to put my Java desktop and mysql database application into my website
[英]How to have menus (website style navigation links) in java desktop application
我正在使用Netbeans,我想開發一個Java桌面應用程序。 該應用程序應該像某個網站,我的意思是我想在我的Java桌面應用程序中有一些菜單,通過點擊這些菜單中的每一個,我應該能夠訪問具有不同包含的一些不同的頁面(如有主菜單,報告菜單...)。 任何想法都將受到高度贊賞。
這是一個基於JavaFX的示例,它基於一組指向不同內容項的超鏈接生成菜單。 這與許多網頁的工作方式非常相似。 樣本通過css設置樣式,類似於網頁。
該樣本創建Java代碼的場景內容,但你可以構建布局和定義內容項FXML由產生SceneBuilder工具,如果你喜歡。
JavaFX也有傳統的應用程序菜單欄 (本示例中未演示)。
示例程序輸出,點擊了一些不同的鏈接:
示例代碼:
import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.stage.Stage;
/**
* Displays content panes activated by a hyper-link based navigation bar
*/
public class HyperlinkedNavMenu extends Application {
private LinkContent[] linkContent;
private final StackPane content = new StackPane();
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
linkContent = createLinkContent();
content.setPrefWidth(200);
HBox.setHgrow(content, Priority.ALWAYS);
stage.setTitle("Capello Pazzo");
stage.setScene(new Scene(createLayout()));
stage.show();
}
private Pane createLayout() {
HBox layout = new HBox(
10,
createNavBar(),
content
);
layout.getStylesheets().add(
getClass().getResource("nav.css").toExternalForm()
);
return layout;
}
private VBox createNavBar() {
VBox nav = new VBox();
nav.setMinWidth(100);
nav.getStyleClass().add("navbar");
for (int i = 0; i < linkContent.length; i++) {
Hyperlink link = createLink(
linkContent[i].linkText,
createContentNode(linkContent[i])
);
nav.getChildren().add(link);
if (i == 0) {
link.fire();
}
}
return nav;
}
private Node createContentNode(LinkContent linkContent) {
Label label = new Label(linkContent.contentText);
label.setWrapText(true);
VBox contentNode = new VBox(
10,
new ImageView(linkContent.image),
label
);
contentNode.getStyleClass().add("contentnode");
return contentNode;
}
private Hyperlink createLink(final String linkText, final Node contentNode) {
Hyperlink link = new Hyperlink(linkText);
link.setOnAction(t -> content.getChildren().setAll(
contentNode
));
return link;
}
private static class LinkContent {
final String linkText, contentText;
final Image image;
LinkContent(String linkText, String contentText, String imageLoc) {
this.linkText = linkText;
this.contentText = contentText;
this.image = new Image(imageLoc);
}
}
// icon license: http://creativecommons.org/licenses/by-nc-nd/3.0/
// icon attribution: http://www.iconarchive.com/artist/archigraphs.html
private LinkContent[] createLinkContent() {
return new LinkContent[] {
new LinkContent(
"Lorem",
"Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"http://icons.iconarchive.com/icons/archigraphs/tea-party/128/Sugar-Cubes-icon.png"
),
new LinkContent(
"Vestibulum",
"Vestibulum a dui et massa laoreet vehicula.",
"http://icons.iconarchive.com/icons/archigraphs/tea-party/128/Tea-Cake-icon.png"
),
new LinkContent(
"Donec",
"Donec sed euismod risus.",
"http://icons.iconarchive.com/icons/archigraphs/tea-party/128/Tea-Cup-icon.png"
),
new LinkContent(
"Duis",
"Duis semper porttitor leo ac posuere.",
"http://icons.iconarchive.com/icons/archigraphs/tea-party/128/Tea-Pot-icon.png"
)
};
}
}
示例css:
/** file: nav.css
* place in same directory as HyperlinkedNavMenu.java and have your build system copy it
* to the same location as HyperlinkedNavMenu.java.class */
.root {
-fx-background-image: url("http://images.all-free-download.com/images/graphiclarge/linen_fabric_background_04_hd_picture_169825.jpg");
-fx-padding: 15;
-fx-font-size: 15;
}
.navbar {
-fx-background-color: burlywood, peachpuff;
-fx-background-radius: 10, 10;
-fx-background-insets: 0, 2;
-fx-font-style: italic;
-fx-padding: 10 15 15 10;
}
.contentnode {
-fx-background-color: aliceblue;
-fx-padding: 15 20 20 15;
-fx-effect: dropshadow(gaussian, slategrey, 10, 0, 5, 5);
}
如果您使用像Netbeans
這樣的IDE,它提供menu bar
, menu
和menu item
您可以將menu bar
拖放到JFrame
並向其添加菜單和菜單項。
要么
您可以使用卡片布局在一個位置顯示多個幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.