2016-02-10 41 views
1

我創建了這個程序,當你點擊「創建」按鈕時,另外兩個ButtonBar(稱爲newNode)被創建..在這個按鈕欄中有一個按鈕,一個圓圈。當所有創建時,我想改變這兩個圓的顏色,當我點擊另一個按鈕。我已經編碼了一些東西,但是我可以改變最後一圈的顏色。JavaFX 8:用自己的ID改變特定圓的顏色

public class Controller implements Initializable{ 

@FXML 
private Button btnHaveFun; 
@FXML 
private ButtonBar ReadSMSBar; 
@FXML 
private ButtonBar GalleryBar; 
@FXML 
private ButtonBar FileExplorerBar; 
@FXML 
private ButtonBar SpyCamBar; 
@FXML 
private ButtonBar TakeAPictureBar; 
@FXML 
private ButtonBar TakeAScreenshotBar; 
@FXML 
private ButtonBar RecordAVideoBar; 
@FXML 
private ButtonBar SpyWhatsappBar; 
@FXML 
private ButtonBar KeyLoggerBar; 
@FXML 
private ButtonBar ScreenStreamBar; 
@FXML 
private ButtonBar SpyMicrophoneBar; 
@FXML 
private ButtonBar slaveBar; 
@FXML 
private VBox slaveVbox; 
@FXML 
private Circle statusSlave; 

private ButtonBar newNode = new ButtonBar(); 
private Circle c= new Circle(); 

@Override 
public void initialize(URL location, ResourceBundle resources) { 
    // TODO Auto-generated method stub 

}  
public void creat(String s){ 
    newNode = new ButtonBar(); 
    c= new Circle(); 
    c.setRadius(11); 
    c.setStrokeWidth(1); 
    c.setStroke(Paint.valueOf("#ffffff")); 
    c.setFill(Paint.valueOf("#15ff00")); 
    c.setId(s); 
    newNode.getButtons().addAll(new Button("Mavero"),c); 
    slaveVbox.getChildren().addAll(newNode) ; 
} 

@FXML 
public void newComp(){  
    creat("id1"); 
    creat("id2"); 
} 

@FXML 
public void change(){ 
c.setFill(Color.BLACK); 
} 
} 
+0

是否要一次將所有圓圈的顏色更改爲相同的顏色?或者將特定的圓圈更改爲特定的顏色? –

+0

我想改變一個特定的顏色..(在這種情況下,創建的第一個圓圈......具有「id1」作爲ID的那個。 –

回答

2

你可以使用Node.lookup()獲得使用CSS選擇器Circle S(或Node.lookupAll多個節點) :

void change(String oldId, String newId) { 
    change(oldId, Color.RED); 
    change(newId, Color.GREEN); 
} 

void change(String id, Color color){ 
    Circle circle = (Circle) slaveVbox.lookup('#'+id); 
    circle.setFill(color); 
} 
+0

工作良好..非常感謝 –

0

其簡單:

只需添加所有圈子,在列表 - >

List<Circle> circles = new ArrayList<>(); 

public void creat(String s) { 
    newNode = new ButtonBar(); 
    Circle c = new Circle(); 
    c.setRadius(11); 
    c.setStrokeWidth(1); 
    c.setStroke(Paint.valueOf("#ffffff")); 
    c.setFill(Paint.valueOf("#15ff00")); 
    c.setId(s); 
    circles.add(c); 
    newNode.getButtons().addAll(new Button("Mavero"), c); 
    slaveVbox.getChildren().addAll(newNode); 
} 

@FXML 
public void newComp() { 
    creat("id1"); 
    creat("id2"); 
} 

@FXML 
public void change() { 
    for (Circle c : circles) { 
     c.setFill(Color.BLACK); 
    } 
} 
+0

這將改變所有圓圈的顏色..但我想改變創建第一個圓的顏色(具有「id1」作爲ID的那個)..我可以在你的for循環中設置一個if語句,但有沒有比這更直接的東西? –

+0

而且列表不能用作你做了..它給出了錯誤。 –

+0

你可以使用作爲費邊回答查找funktion,但列表/循環方法更快,什麼錯誤給予它? – Marcel