Javafx中tabeview怎么添加radio button按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javafx中tabeview怎么添加radio button按钮相关的知识,希望对你有一定的参考价值。

参考技术A 你的listview填充的时候有个bean吧。里面加一个标志位,表示要显示radioButton
or
button;在adapter里面getview的代码根据这个变量控制不同的显示按钮,当然布局里面是要放两个的,通过隐藏和显示来达到效果;当软件的下载状态或者安装状态改变的时候,你的bean里面的这个标志位也就改变了,然后调用adapter的.notifyDataSetChanged();
重新显示一遍UI就可以了

Javafx 中 GridPane 中的 HBox

【中文标题】Javafx 中 GridPane 中的 HBox【英文标题】:HBox inside GridPane in Javafx 【发布时间】:2014-12-18 01:26:38 【问题描述】:

我必须将 HBox 添加到 GridPane。如果我将 HBox 添加到同一类的 GridPane 中,则系统会正确显示。但是当我尝试使用两个类时,只显示空窗口。我是 javafx 的新手。我该怎么做,请帮助我谢谢。

public class IpCamMainWindow  extends Application

    private static ArrayList<IpCamViewer> ipCameraList = new ArrayList<IpCamViewer>();
    private static ArrayList<String> urls= new ArrayList<String>();
    GridPane grid =null;

    private ImageView imgWebCamCapturedImage;
    private BufferedImage grabbedImage;
    private ObjectProperty<Image> imageProperty = new SimpleObjectProperty<Image>();
    private Webcam webCam = null;
    private boolean stopCamera = false;
    IPview ipCamViewer=null;

    public static void main(String[] args) 


        launch(args);
    

    @Override
    public void start(Stage stage) throws Exception 
        grid = new GridPane();
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(0, 10, 0, 10));      

        for(int i=0;i<4;i++)
            ipCamViewer = new IPview();     

            grid.add(ipCamViewer, i%2, i/2);
            System.out.println("column: " + i%2 + ", row: " + i/2);

        

        Scene scene = new Scene(grid);
        stage.setScene(scene);
        stage.setTitle("IP Camera Solution");
        stage.show();       

       


-

public class IPview extends HBox   

    private ImageView imgWebCamCapturedImage;
    private BufferedImage grabbedImage;
    private ObjectProperty<Image> imageProperty = new SimpleObjectProperty<Image>();
    HBox hbox;

    public IPview()

        HBox hbox=addHBox();

    

    public HBox addHBox() 
        hbox = new HBox();
        hbox.setPadding(new Insets(15, 12, 15, 12));
        hbox.setSpacing(10);
        hbox.setStyle("-fx-background-color: #336699;");

        Button buttonCurrent = new Button("Current");
        buttonCurrent.setPrefSize(100, 20);

        Button buttonProjected = new Button("Projected");
        buttonProjected.setPrefSize(100, 20);
        hbox.getChildren().addAll(buttonCurrent, buttonProjected);

        return hbox;
       


【问题讨论】:

您需要确定IPView 是一个 HBox(继承:public class IPView extends HBox)还是IPView 有一个 @ 987654327@(聚合:HBox hbox)。现在您两者都有,并且您将按钮添加到聚合的 HBox,但您将 IPView 本身(不包含按钮)添加到 GridPane 我需要使用继承(公共类IPView扩展HBox)然后想将HBox添加到Gridpane。 所以不要在IPView中创建另一个HBox作为字段 【参考方案1】:

如果IPViewHBox 的子类,则需要将按钮添加到IPView 实例中,而不是创建另一个HBox 作为其成员变量。

public class IPview extends HBox   

    private ImageView imgWebCamCapturedImage;
    private BufferedImage grabbedImage;
    private ObjectProperty<Image> imageProperty = new SimpleObjectProperty<Image>();

    public IPview()

        this.setPadding(new Insets(15, 12, 15, 12));
        this.setSpacing(10);
        this.setStyle("-fx-background-color: #336699;");

        Button buttonCurrent = new Button("Current");
        buttonCurrent.setPrefSize(100, 20);

        Button buttonProjected = new Button("Projected");
        buttonProjected.setPrefSize(100, 20);
        this.getChildren().addAll(buttonCurrent, buttonProjected);

       


如果您希望HBox 成为成员变量,那么您不会将IPView 设为HBox 的子类,而只需提供对HBox 的访问权限:

public class IPview   

    private ImageView imgWebCamCapturedImage;
    private BufferedImage grabbedImage;
    private ObjectProperty<Image> imageProperty = new SimpleObjectProperty<Image>();
    private HBox hbox;

    public IPview()

        hbox = new HBox();
        hbox.setPadding(new Insets(15, 12, 15, 12));
        hbox.setSpacing(10);
        hbox.setStyle("-fx-background-color: #336699;");

        Button buttonCurrent = new Button("Current");
        buttonCurrent.setPrefSize(100, 20);

        Button buttonProjected = new Button("Projected");
        buttonProjected.setPrefSize(100, 20);
        hbox.getChildren().addAll(buttonCurrent, buttonProjected);

       

    public Node getView() 
        return hbox ; 
    


然后在你的应用程序类中你会这样做

        ipCamViewer = new IPview();     
        grid.add(ipCamViewer.getView(), i%2, i/2);

总的来说,我更喜欢第二种方法,但这只是个人喜好问题。

【讨论】:

以上是关于Javafx中tabeview怎么添加radio button按钮的主要内容,如果未能解决你的问题,请参考以下文章

javafx中如何给面板添加背景图片例如BorderPane

好几个radio怎么设置一个为默认选上

element组件radio怎么去除边框

MFC中DLALOG下的RADIO控件怎么达成4选一

Javafx 中 GridPane 中的 HBox

JavaFX 2.0 - 样式/模板现有控件