我在JavaFX应用程序中有一个TabPane.我必须写一个监听器来关闭标签,所以我从标签中删除了默认关闭图标并添加了我的自定义关闭图标.以下是代码:
Tab gTab = new Tab("GlobalData.json");
Hyperlink hlink = new Hyperlink();
Image image = new Image(FileTreeItem.class.getResourceAsStream("../images/close.png"));
hlink.setGraphic(new ImageView(image));
hlink.setFocusTraversable(false);
gTab.setGraphic(hlink);
hlink.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (TabPaneUtil.getInstance().getSelectionModel().getSelectedItem().getText().endsWith("*")) {
Response res = FXOptionPane.showConfirmDialog(new Main().getPrimaryStage(), "Would you like to save?", "Confirmation");
if (res.equals(Response.YES))
event.consume();
else
TabPaneUtil.getInstance().getTabs().remove(TabPaneUtil.getInstance().getSelectionModel().getSelectedItem());
} else {
TabPaneUtil.getInstance().getTabs().remove(TabPaneUtil.getInstance().getSelectionModel().getSelectedItem());
}
}
});
gTab.setContent(main1.globalDataView(ApplicationContext.getTreeView().getSelectionModel().getSelectedItem()));
TabPaneUtil.getInstance().getTabs().add(gTab);
TabPaneUtil.getInstance().getSelectionModel().select(gTab);
Run Code Online (Sandbox Code Playgroud)
发生的事情是我首先获得关闭图标,然后是选项卡名称.有没有什么方法可以先得到标签名称,然后是图形?
PS:我见过一些解决方案,比如在Label和旋转图形中添加文本.我不太可能这样做,因为我将不得不在我的应用程序中进行大量代码更改并且它变得非常混乱!任何帮助,将不胜感激.
有代码:
List<Integer> al = new ArrayList<>() ;
Iterator iterator = al.iterator();
System.out.println(iterator.getClass().getName());
Run Code Online (Sandbox Code Playgroud)
我得到:
java.util.ArrayList$Itr
Run Code Online (Sandbox Code Playgroud)
这是什么意思:“ ArrayList $ Itr”?
我在这一行中得到了什么Iterator实现?
Iterator iterator = al.iterator();
Run Code Online (Sandbox Code Playgroud) 我想选择一个图像FileChooser,然后将所选图像保存在 byte[] 变量中,我打开对话框
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open Resource File");
fileChooser.showOpenDialog(new Stage());
Run Code Online (Sandbox Code Playgroud)
现在,如何从中获取图像文件FileChooser并将其保存在 byte[] 变量中?
我想在一个标签中显示来自用户的输入信息,但我在运行时无法在标签中显示性别选项
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event) {
if (male.isSelected()) {
info.setText(male.getText());
}
if (female.isSelected()) {
info.setText(female.getText());
}
}
});
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
info.setText(nameField.getText()+ "\n"+ noField.getText() +"\n"+ emaileField.getText() );
}
});
Run Code Online (Sandbox Code Playgroud) 可以使用javafx.stage.Stage.setResizing(boolean)方法更改 JavaFX 阶段的可调整大小状态。
问题
是否有可能允许仅水平或仅垂直调整大小?
有诸如Stage.setMaxWidth、Stage.setMaxHeight、之类的方法Stage.setMinWidth,Stage.setMinHeight但它们只能用于控制固定大小阶段的大小调整(width = minWidth = maxWidth 例如通过设置禁止水平调整大小)。
如何制作一个触发的自定义事件Stage.setScene()?
在我的代码中,按钮切换场景,效果很好。但是,我想扩展舞台以具有一个额外的事件,当按钮或可能的任何其他元素触发 setScene 时会触发该事件。
例子:
package sample;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) {
Group g1 = new Group();
Button b1 = new Button("2");
g1.getChildren().setAll(b1);
Scene scene1 = new Scene(g1, 50, 50);
Group g2 = new Group();
Button b2 = new Button("1");
g2.getChildren().setAll(b2);
Scene scene2 = new Scene(g2, 50, 50);
stage.setScene(scene1);
stage.setTitle("JavaFX Application Life Cycle"); …Run Code Online (Sandbox Code Playgroud)