2014-02-22 15 views
0

所以我得到的主要問題是當試圖設置columnUUID.setCellValueFactory( new PropertyValueFactory<Person,String>("different") );時,它會填充columnPlayer.setCellValueFactory( new PropertyValueFactory<Person,String>("player") );作品。如果我將兩者都設置爲「player」的值,則會使用這些值填充這兩個表。如果我將這兩種方法設置爲「不同」,它只會添加空白文本。在兩個類中將「不同」更改爲不同的值不會執行任何操作。對於javafx中的TableColumn,setCellValueFactory沒有爲一個值輸入文本,但增加了空白區域

package com.sandislandserv.rourke750.Gui; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import java.util.Map; 

import com.sandislandserv.rourke750.BetterAssociations; 
import com.sandislandserv.rourke750.database.BaseValues; 

import javafx.collections.FXCollections; 
import javafx.collections.ObservableList; 
import javafx.fxml.FXML; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.control.ListView; 
import javafx.scene.control.PasswordField; 
import javafx.scene.control.TableColumn; 
import javafx.scene.control.TableView; 
import javafx.scene.control.TextArea; 
import javafx.scene.control.TextField; 
import javafx.scene.control.cell.PropertyValueFactory; 
import javafx.scene.layout.AnchorPane; 

公共類GuiController {

@FXML private TextField username; 
@FXML private TextField domain; 
@FXML private PasswordField password; 
@FXML private AnchorPane pane; 
@FXML private Button login; 
@FXML private TableView<Person> listofPlayers; 
@FXML private Label badLogin; 
@FXML private TableColumn<Person, String> columnUUID; 
@FXML private TableColumn<Person, String> columnPlayer; 

private ObservableList<Person> data = FXCollections.observableArrayList(); 
public GuiController() { 
} 

public AnchorPane getPane(){ 
    return pane; 
} 

@FXML 
public void Login(){ 
    data.clear(); 
    badLogin.setVisible(false); 
    System.out.print(username.getText()); 
    System.out.print(password.getText()); 
    String players = getPlayers(username.getText().toString(), password.getText().toString()); 
    String[] player = players.split(" "); 
    for (int x = 0; x < player.length; x=x+2){ 
     System.out.println(player[x] + " " + player[x+1]); // makes sure that both values are populated [for debugging] 
     data.add(new Person(player[x], player[x+1])); 
    } 
    columnUUID.setCellValueFactory(
      new PropertyValueFactory<Person,String>("different") 
     ); 
    columnPlayer.setCellValueFactory(
      new PropertyValueFactory<Person,String>("player") 
     ); 
    listofPlayers.getItems().setAll(data); 
} 

public String getPlayers(String username, String password){ 
    StringBuilder builder = new StringBuilder(); 
    try { 
     @SuppressWarnings("resource") 
     Socket socket = new Socket(domain.getText().toString(), 25549); 
     PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
     BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     out.println(username + " " + password); 
     if (input.readLine().equals("BAD")) { 
      badLogin.setVisible(true); 
      return null; 
     } 
     out.println("Get All Player Info"); 
     String line; 
     while ((line = input.readLine()) != null){ 
      if (line.equals("END")) break; 
      builder.append(line + " "); 
     } 
     out.println("END"); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return builder.toString(); 
} 

} `

` 包com.sandislandserv.rourke750.Gui;

import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty;

公共類Person {

private StringProperty different; 
private StringProperty player; 

public Person(String player, String playerid) { 
    this.player = new SimpleStringProperty(player); 
    different = new SimpleStringProperty(playerid); 
} 

public String getPlayer(){ 
    return player.get(); 
} 

public String getUUID(){ 
    return different.get(); 
} 

}

` 

回答

1

重命名getUUID方法getDifferent,它應該工作。更好的是,提供一個differentProperty方法,返回different

PropertyValueFactory將根據您提供的名稱查找方法。更多信息在javadoc

+0

非常感謝。修復。 – rourke750

相關問題