小编000*_*laH的帖子

自动展开TextField以适合文本

我想创建一个文本字段,该字段在输入更多文本时会水平扩展。

prefColumnCount属性绑定到TextField中文本的长度后,其大小会随着文本的变长而增加。但是,无论文本长度如何,插入记号的位置都不会更新,并且会卡在同一位置。用户必须手动将插入号移动到前面,才能正确显示它。

图片:

输入一些文本后的样子,该文本不会占据整个文本字段:

在文本开头移动插入符号后:

这是我当前的代码:

TextField textField = new TextField();
textField.prefColumnCountProperty().bind(textField.textProperty().length());
setHgrow(textField, Priority.ALWAYS);
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?任何帮助表示赞赏!

java javafx

7
推荐指数
1
解决办法
91
查看次数

如何在 fxml 文件中实现 ToggleGroup,使用 Spring vs JavaFx

MainController

public class MainController {
    @FXML private RadioButton radioButton;
    @FXML private RadioButton radioButton2;

    @FXML public void addContact() {
        boolean b = radioButton.isSelected();
        boolean b2 = radioButton.isSelected();
    }
}
Run Code Online (Sandbox Code Playgroud)

并且main.fxml

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="350.0" prefWidth="755.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ru.habrahabr.ui.MainController">
      <TableView fx:id="table" editable="true" prefHeight="200.0" prefWidth="405.0" tableMenuButtonVisible="true" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <columnResizePolicy>
              <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
          </columnResizePolicy>
      </TableView>

      <HBox alignment="CENTER" layoutX="21.0" layoutY="207.0" prefHeight="50.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0">
            <RadioButton fx:id="radioButton" text="Male">
               <HBox.margin>
                  <Insets right="3.0"/>
               </HBox.margin>
            </RadioButton>

            <RadioButton fx:id="radioButton2" text="Female">
               <HBox.margin> …
Run Code Online (Sandbox Code Playgroud)

spring javafx

5
推荐指数
2
解决办法
6692
查看次数

C# WPF - Material Design 文本框问题

我是编程新手,开始申请学校。为此,我使用 C# WPF,为了获得美观的应用程序,我安装了 Material Design。

首先,我开始了 Material Design 的演示,在这里你可以看到你可以使用哪些东西等等,以及可以复制的东西。因此,快速查看后,我发现了一个漂亮的文本框,带有边框,其顶部有一个复选框。要复制的代码是这样的

<StackPanel>
    <CheckBox x:Name="MaterialDesignOutlinedTextFieldTextBoxEnabledComboBox"
              Margin="32,0,0,8" IsChecked="True">
        Enabled
    </CheckBox>

    <TextBox Height="100" VerticalAlignment="Top" Margin="32,0,0,0"
             TextWrapping="Wrap" AcceptsReturn="True"
             VerticalScrollBarVisibility="Auto"
             Style="{StaticResource MaterialDesignOutlinedTextFieldTextBox}"
             materialDesign:HintAssist.Hint="This is a text area"
             IsEnabled="{Binding Path=IsChecked, ElementName=MaterialDesignOutlinedTextFieldTextBoxEnabledComboBox}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

因为我只需要文本框,所以我删除了复选框的代码并在应用程序中实现了其余部分。所以现在的代码是这样的:

<TextBox Height="100" Margin="32,0,0,0" VerticalAlignment="Top"
    TextWrapping="Wrap" AcceptsReturn="True"
    VerticalScrollBarVisibility="Auto"
    Style="{StaticResource MaterialDesignOutlinedTextFieldTextBox}"
    materialDesign:HintAssist.Hint="This is a text area" />
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我无法编辑文本框。我猜 TextBox 链接到了 CheckBox,因为我删除了它,所以我无法再在其中写入。这一切都可以与标准文本框配合使用,但使用复制的代码我无法执行任何操作,只需查看带有圆形边框的文本框即可。

那么任何人都可以帮助我,如何在我可以编辑它的同时实现带有此边框的文本框等等?我现在不知道有什么解决方案,所以如果有人可以帮助我,我将不胜感激。

感谢您的帮助。

c# wpf material-design

5
推荐指数
1
解决办法
2万
查看次数

Java FX 使用 fxml 文件创建自定义对话框。如何设置或从中获取结果?

在这里,我想创建一个自定义对话框,其工作方式类似于Alert,具有漂亮的 UI;“showDialog.fxml”是一个DialogPane.

\n

我尝试过JFXDialog,但它没有等待,也没有给我用户的选择。有什么办法可以得到好的result吗?提前致谢。

\n

这是我的Alert实现:

\n
primaryStage.setOnCloseRequest(event -> {\n    Alert alert = new Alert(Alert.AlertType.CONFIRMATION);\n    alert.setTitle("\xd0\x92\xd1\x8b\xd1\x85\xd0\xbe\xd0\xb4");\n    alert.setHeaderText("Are you really want to exit ?");\n    ButtonType yes = new ButtonType("Yes");\n    ButtonType no = new ButtonType("No");\n    alert.getButtonTypes().clear();\n    alert.getButtonTypes().addAll(yes, no);\n\n    Optional<ButtonType> option = alert.showAndWait();\n    if (option.get() == yes) {\n        System.exit(0);\n    } else {\n        alert.close();\n        event.consume();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是新的。

\n
 primaryStage.setOnCloseRequest(event -> {\n     FXMLLoader loader = new FXMLLoader(getClass().getResource("/views/common/showDialog.fxml"));\n     ShowDialogController controller = loader.getController();\n     Dialog<JFXButton> dialog = …
Run Code Online (Sandbox Code Playgroud)

javafx

5
推荐指数
1
解决办法
5437
查看次数

为什么 JavaFX 中的某些文本边界不一致,我该如何避免?

我使用一个Text节点来计算字符串的尺寸,如所描述这里,归纳为:

new Text("some text").getLayoutBounds();
Run Code Online (Sandbox Code Playgroud)

返回的维度在不同的执行点并不总是相同的,对于相同的输入 string,并且其他所有内容都相同(字体等)。似乎不一致在某种程度上与退格键与 a 的交互有关TextArea即使此 TextArea 与 Text 节点无关。

这是一个间歇性/非确定性问题,但其他人能够使用以下代码重现它:

public class Test extends Application {
    private Text text = new Text();
    
    public static void main(String... args) {
        launch(args);
    }
    
    public void start(Stage stage) {
        TextArea textArea = new TextArea();
        textArea.textProperty().addListener((observable, oldValue, newValue) -> {
            text.setText(newValue);
            System.out.println(String.format("height=%.1f", text.getLayoutBounds().getHeight()));
        });

        stage.setScene(new Scene(new Group(textArea)));
        stage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

输入几个“X”字符,我得到(在 Windows 上):height=16.0. 键入退格后(但当字符串中仍有几个“X”字符时),我得到height=17.0. 如果我输入更多字符,高度保持17.0,然后任意移回 16.0,然后是 17.0 …

java javafx

5
推荐指数
0
解决办法
160
查看次数

MediaPlayer 无法播放 H264/MPEG4 视频

我想用来MediaView播放 Shinobi 媒体服务器生成的视频流和视频文件,但MediaView似乎无法处理 Shinobi 生成的任何流或文件。

我正在使用 Java 18 和 JavaFX 19(我也尝试过旧版本)。

我这里有一个由 Shinobi 生成的示例文件。

在VLC中运行良好,这表明该文件具有以下属性:

编解码器: H264 - MPEG-4 AVC(第 10 部分)(avc1)
视频分辨率: 1280x720
解码格式: Planar 4:2:2 YUV 全尺寸
色度位置:左侧

我已向MediaPlayerMediaViewMedia对象添加了错误处理程序,但当我尝试播放该文件时没有错误。

有人知道为什么玩家不喜欢上面的文件吗?

有人成功播放 Shinobi 的文件吗(它在幕后使用 FFMPEG。)?

它确实播放其他文件,例如:

https://coderslegacy.com/wp-content/uploads/2020/07/Pygame_Platformer-1.mp4";
Run Code Online (Sandbox Code Playgroud)

我希望视频能够正常播放,或者让播放器告诉我为什么无法播放视频。

这是我的代码:

package com.example.videotester;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaErrorEvent;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

import java.io.File;

public class HelloApplication extends …
Run Code Online (Sandbox Code Playgroud)

mp4 javafx media-player h.264 shinobi

5
推荐指数
1
解决办法
265
查看次数

如何使用 Jackson 排除超类属性

我有一堂课:

public class User extends Body {
    private Integer userId;
    private String userName;
    private String emailId;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我想Body用 Jackson 映射器排除类属性,因为我收到错误。

ObjectMapper mapper = new ObjectMapper();
User user = new User;
String jsonString = mapper.writeValueAsString(user);
Run Code Online (Sandbox Code Playgroud)

如何在排除所有扩展或实现类的情况下将对象转换为 JSON?我只需要转换User类而没有Body

我的超类有很多这样的公共方法:

public final Enumeration method(String email) {
    throw new RuntimeException("Error");
}

public final Object method(String name) {
    throw new RuntimeException("Error");
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

3
推荐指数
1
解决办法
266
查看次数

如果 TextField 为空,如何禁用按钮?

我无法禁用我的按钮。在下面的代码中,acceptis aButtonemailis a TextField

email.setOnAction(ae -> {
    if(!email.getText().isEmpty()) {
        accept.setDisable(false);
    } else
        accept.setDisable(true);
});
Run Code Online (Sandbox Code Playgroud)

如果我在文本字段中写,它不会做任何事情。

text if-statement javafx textfield

2
推荐指数
1
解决办法
850
查看次数

Material Design wpf c#中的MessageBox

我在 XAML Toolkit C# 中使用 Material Design,在 Material Design WPF C# 中使用 MessageBox,

图 1

图 2

我需要这样或更好的 MessageBox 设计

我试过使用 DialogHost 但发生此错误

没有加载的 DialogHost 实例。

private async void MenuPopupButton_OnClick(object sender, RoutedEventArgs e) {
    var sampleMessageDialog = new SampleMessageDialog {
        Message = {Text = "Goodbye"}
    };

    await DialogHost.Show(sampleMessageDialog, "RootDialog");            
}
Run Code Online (Sandbox Code Playgroud)

没有加载的 DialogHost 实例。

c# wpf xaml material-design material-design-in-xaml

2
推荐指数
1
解决办法
5800
查看次数

如何在一行中设置 FXML“填充”属性

我想以与 C# XAML 文件中相同的方式定义按钮的填充。而不是写这样的东西:

<Button fx:id="btn1" ...>
    <padding>
        <Insets top="0" right="5" bottom="10" left="5" />
    </padding>
</Button>

<Button fx:id="btn2" ...>
    <padding>
        <Insets topRightBottomLeft="5" />
    </padding>
</Button>
Run Code Online (Sandbox Code Playgroud)

,这样写会更容易:

<Button fx:id="btn1" ... padding="0 5 10 5" />
<Button fx:id="btn2" ... padding="5" />
Run Code Online (Sandbox Code Playgroud)

我不知道为什么“填充”属性有这个限制。我在FXML 文档中看到,可以通过为给定类型实现valueOf()方法来完成类型强制

public static Insets valueOf(String info) {
    // Data retrieval
}
Run Code Online (Sandbox Code Playgroud)

但我不知道把它放在哪里,因为Insets类被锁定(JDK)。因为这是一个静态方法,我认为该方法可以在其他地方实现,但是启动应用程序总是给我一个强制错误:

Caused by: java.lang.IllegalArgumentException: Unable to coerce 0 5 10 5 to class javafx.geometry.Insets.
Run Code Online (Sandbox Code Playgroud)

目前,我找到的唯一解决方案是:

  • 定义一个名为GButton的新 FXML 组件,该组件继承Button …

java javafx padding coercion type-coercion

2
推荐指数
1
解决办法
3918
查看次数