JavaFX,如何填写表格
我在JavaFX,如何填写表格,java,javafx,Java,Javafx,我在mssqlserver中有一个表,它有4列:id,channel,movie,time。四个可能的行:HBO |愤怒7 | 12:15,HBO |温布尔登| 11:25,FOX |辛普森一家| 7:00,FOX |路西法| 9:01。我有一门课叫guide: public class guide { private String channel; private String movie; private LocalTime time; (...) 还有一个名为gui的类: import
mssqlserver
中有一个表,它有4列:id
,channel
,movie
,time
。四个可能的行:HBO |愤怒7 | 12:15
,HBO |温布尔登| 11:25
,FOX |辛普森一家| 7:00
,FOX |路西法| 9:01
。我有一门课叫guide
:
public class guide {
private String channel;
private String movie;
private LocalTime time;
(...)
还有一个名为gui
的类:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import javafx.util.Callback;
import org.joda.time.LocalTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.DateTimeFormatterBuilder;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class gui extends Application {
Stage stage;
Scene sceneMain;
int nrOfChannels;
List<String> channelsOnMain;
@Override
public void start(Stage primaryStage) throws Exception {
TableView<guide> tableMain = new TableView<>(loadMain());
List<TableColumn<guide, String>> colChannelList = new ArrayList<>();
for (int i = 0; i < nrOfChannels; i++) {
colChannelList.add(new TableColumn<guide, String>(channelsOnMain.get(i)));
}
for(int i = 0; i < colChannelList.size(); i++){
colChannelList.get(i).setCellValueFactory(new PropertyValueFactory<guide, String>("movie"));
}
for(int i = 0; i < colChannelList.size(); i++)
tableMain.getColumns().add(colChannelList.get(i));
BorderPane paneMain = new BorderPane(tableMain);
sceneMain = new Scene(paneMain);
stage = primaryStage;
stage.setScene(sceneMain);
stage.setTitle("TVguide");
stage.show();
}
public ObservableList<guide> loadMain(){
ObservableList<guide> mainList = FXCollections.observableArrayList();
int numberOfChann = 0;
try {
handleDB dbMain = new handleDB();
Connection myConnection = dbMain.connect_with_DB();
String query = "SELECT * FROM main";
ResultSet mainFromDB = dbMain.getFromSQL(myConnection, query);
String tempChannel = "";
channelsOnMain = new ArrayList<>();
while (mainFromDB.next()) {
if(mainFromDB.getString(3).toString() != null && !mainFromDB.getString(3).toString().isEmpty()) {
if(!mainFromDB.getString(2).equals(tempChannel)){
numberOfChann++;
tempChannel = mainFromDB.getString(2);
channelsOnMain.add(tempChannel);
}
mainList.add(new guide(mainFromDB.getString(2), mainFromDB.getString(3), new LocalTime(mainFromDB.getString(4))));//2-channel,3-movie,4-time
}
}
} catch(Exception ex){
ex.printStackTrace();
}
nrOfChannels = numberOfChann;
return mainList;
}
}
它把每一部电影放在每一个专栏里,这是合乎逻辑的,但不是我的观点。有可能改变这个吗
for(int i = 0; i < colChannelList.size(); i++){
colChannelList.get(i).setCellValueFactory(new PropertyValueFactory<guide, String>("movie"));
}
for(int i=0;i
为了在列中具有colChannelList.get(i)
movie
属于具有特定频道的对象的属性?
简言之,我想要一个表格,在HBO的栏中有狂暴7
和温布尔登和福克斯的栏中有辛普森一家的和路西法的,而不是f.e.HBO的栏中有每一部4
电影,有可能吗?java中的命名惯例规定,类名应该以大写字母开头!因此,您可能想称自己为classGui
或Gui
(第二个,因为它实际上是一个缩写,但这是一个偏好问题……)java命名的约定是,类名应该以大写字母开头!因此,您可能想称自己为classGui
或Gui
(第二个,因为它实际上是一个缩写,但这是一个偏好问题。)
for(int i = 0; i < colChannelList.size(); i++){
colChannelList.get(i).setCellValueFactory(new PropertyValueFactory<guide, String>("movie"));
}