javafx-2 – 在JavaFX2.2中,如何设置输入字段和表头中输入的文本的字体大小?

前端之家收集整理的这篇文章主要介绍了javafx-2 – 在JavaFX2.2中,如何设置输入字段和表头中输入的文本的字体大小?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的 JavaFX2.2 fxml程序中,我发现字体无法正确扩展.结果,表头和输入数据字段不成比例地大.

有没有办法设置输入字段中输入的文本的字体大小?

有没有办法设置表头中显示的文本的字体大小?

SCCE

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.cell.*?> 
<?import javafx.collections.*?> 
<?import fxmltableview.*?> 
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>
<?import javafx.collections.*?>
<?import java.lang.*?>
<?import fxmltableview.Person?>

<Scene xmlns:fx="http://javafx.com/fxml" >

    <GridPane alignment="center" hgap="10" vgap="10">
        <padding>
            <Insets top="10" right="10" bottom="10" left="10"/>
        </padding>
        <Label  text="Address Book: This text is in font size 12 on Win7" GridPane.columnIndex="0" GridPane.rowIndex="0">
            <font>
                <Font size="12.0"/>
            </font>
        </Label>
        <TextField fx:id="textField" GridPane.columnIndex="0" GridPane.rowIndex="1">
            input text field. See how large I am!!!
        </TextField>
        <TableView GridPane.columnIndex="0" GridPane.rowIndex="2">
            <columns>
                <TableColumn text="First Name">
                    <cellValueFactory>
                        <PropertyValueFactory property="firstName" />
                    </cellValueFactory>
                </TableColumn>
                <TableColumn text="Last Name">
                    <cellValueFactory>
                        <PropertyValueFactory property="lastName" />
                    </cellValueFactory>
                </TableColumn>
                <TableColumn text="Email Address">
                    <cellValueFactory>
                        <PropertyValueFactory property="email" />
                    </cellValueFactory>
                </TableColumn>
            </columns> 
            <items>
                <FXCollections fx:factory="observableArrayList">
                    <Person firstName="Jacob" lastName="Smith"  
                            email="jacob.smith@example.com"/>
                    <Person firstName="Isabella" lastName="Johnson" 
                            email="isabella.johnson@example.com"/>
                    <Person firstName="Ethan" lastName="Williams" 
                            email="ethan.williams@example.com"/>
                    <Person firstName="Emma" lastName="Jones"
                            email="emma.jones@example.com"/>
                    <Person firstName="Michael" lastName="Brown" 
                            email="michael.brown@example.com"/>
                </FXCollections>
            </items> 
        </TableView>
    </GridPane>
</Scene>

/*
 * To change this template,choose Tools | Templates
 * and open the template in the editor.
 */
package fxmltableview;

import javafx.beans.property.SimpleStringProperty;

public class Person {
   private final SimpleStringProperty firstName = new SimpleStringProperty("");
   private final SimpleStringProperty lastName = new SimpleStringProperty("");
   private final SimpleStringProperty email = new SimpleStringProperty("");

public Person() {
        this("","","");
    }

    public Person(String firstName,String lastName,String email) {
        setFirstName(firstName);
        setLastName(lastName);
        setEmail(email);
    }

    public String getFirstName() {
        return firstName.get();
    }

    public void setFirstName(String fName) {
        firstName.set(fName);
    }

    public String getLastName() {
        return lastName.get();
    }

    public void setLastName(String fName) {
        lastName.set(fName);
    }

    public String getPrimary() {
        return getEmail();
    }

    public String getSecondary() {
        return getEmail();
    }

    public String getEmail() {
        return email.get();
    }

    public void setEmail(String fName) {
        email.set(fName);
    }
}

public class FXMLTableViewController implements Initializable {

    @FXML
    private Label label;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }

    @Override
    public void initialize(URL url,ResourceBundle rb) {
        // TODO
    }    
}

package fxmltableview;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author 
 */
public class FXMLTableView extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
       primaryStage.setTitle("FXML TableView Example");
       primaryStage.setScene
       ((Scene)FXMLLoader.load(getClass().getResource("fxml_tableview.fxml")));
       primaryStage.show();
    }

    /**
     * The main() method is ignored in correctly deployed JavaFX application.
     * main() serves only as fallback in case the application can not be
     * launched through deployment artifacts,e.g.,in IDEs with limited FX
     * support. NetBeans ignores main().
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
}

解决方法

我在 MarcoRob之前找到了这些有用的文章

所以我

1)手动更改表格列的宽度

<TableColumn text="First Name" prefWidth="90" >
            <cellValueFactory>
                <PropertyValueFactory property="firstName" />
            </cellValueFactory>
        </TableColumn>
        <TableColumn text="Last Name" prefWidth="90" >
            <cellValueFactory>
                <PropertyValueFactory property="lastName" />
            </cellValueFactory>
        </TableColumn>

2)在fxml文件添加了一个链接

<stylesheets>
    <URL value="@tffontsize.css" />
  </stylesheets>

3)创建了一个css文件tfffontsize.css

.text-field {
    -fx-font-size: 12pt;
}
.table-view .column-header{
    -fx-font-size: 14;
}

.table-cell {
    -fx-font-size: 12px;
}

猜你在找的Java相关文章