2017-04-05 19 views
0

如何禁用的JavaFX文本,使它看起來如何禁用的JavaFX文本

Text t = new Text(); 

t.setText("This is a text sample"); 

t.setDisable(true); //it does not work 
+1

它沒有任何意義。文本只是文字,它什麼也不做,你不能與它互動。沒有什麼可禁用的。你期望禁用的文字能做什麼? – jewelsea

+0

什麼都沒有,只是表明禁用x選項的用戶,帶有標籤的作品,只是一個標籤不允許我格式化文本,所以我使用文字 – R3ing

+0

我不確定文本如何提供更多的格式選項標籤,但我會盡力回答你的問題。 – jewelsea

回答

2

解決方案

你可以樣式的文本在視覺上,禁用,如果你想。下面的解決方案將不透明度設置綁定到文本的禁用設置。

disabled

import javafx.application.Application; 
import javafx.beans.binding.Bindings; 
import javafx.geometry.Insets; 
import javafx.scene.Scene; 
import javafx.scene.layout.VBox; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 

public class DisabledText extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage stage) { 
     Text enabledText = new Text("Enabled"); 

     Text disabledText = new Text("Disabled"); 
     disabledText.opacityProperty().bind(
       Bindings.when(
         disabledText.disabledProperty()) 
         .then(0.4) 
         .otherwise(1) 
     ); 
     disabledText.setDisable(true); 

     VBox layout = new VBox(10, enabledText, disabledText); 
     layout.setPadding(new Insets(10)); 
     stage.setScene(new Scene(layout)); 
     stage.show(); 
    } 
} 

注意

你也許可以通過CSS來實現這一目標還有,而非約束,我只是沒有嘗試的選擇。

一般來說,很多時候,使用Label和Text通常會更好,因爲它包含更多的靈活性和功能。

背景

即使用戶不能用文字直接交互,因此禁用文字真的有沒有影響,我猜你正在尋找的是文本看起來像其他東西的時候,他們被禁止。

通常,當菜單項或按鈕等控件被禁用時,會發生什麼情況:在控件上設置了CSS僞類:disabled。發生這種情況時,JavaFX 8的默認modena.css樣式表會將控件的不透明度修改爲-fx-opacity: 0.4;。這會改變控件的外觀,使其看起來好像變灰,因爲低透明度會使控件看起來褪色。

文本被構建爲基本繪圖形狀。 Java中的基本繪圖形狀故意不依賴於CSS(儘管如果需要可以使用CSS) - 有關默認CSS規則適用於形狀的信息,請參見CSS reference guide。如果場景不使用任何佈局窗格或控件,則不會加載標準的modena.css樣式表,並且不會將CSS處理應用於場景(出於效率原因,例如,您可以編寫高性能沒有使用CSS處理的遊戲)。因此,對於文本的CSS處理不一定是必需的,並且如果使用的話,其範圍受到限制。

0

兩種可能的方式:

  1. 新增CSS樣式文本的實例。
  2. 改爲使用標籤。

我推薦使用Label而不是Text。

相關問題