【发布时间】:2021-03-21 19:58:42
【问题描述】:
我正在尝试将一个列表视图附加到另一个列表视图中的每个元素,并且该列表视图连接到一个 sql 数据库。因此,您在列表视图中选择一个值,然后弹出另一个列表视图。但我不知道如何将它们与听众联系起来。 这是我到目前为止所拥有的,希望你能理解我的问题。 Its supposed to look like this
public static void main(String[] args) {
launch(args);
}
private ArrayList<String> getArtister () {
ArrayList<String> artister = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://vhost6.lnu.se:23306/1ik013v20-12?useSSL=false",
"1ik013v20-12", "aubergine")) {
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT Namn FROM artist");
while (result.next()) {
artister.add(result.getString(1));
}
} catch (SQLException ex) {
System.out.println("Something went wrong...");
}
return artister;
}
private ArrayList<String> getLåtar () {
ArrayList<String> låtar = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://vhost6.lnu.se:23306/1ik013v20-12?useSSL=false",
"1ik013v20-12", "aubergine")) {
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT Namn FROM album WHERE Artist = 'Bob Dylan'");
while (result.next()) {
låtar.add(result.getString(1));
}
} catch (SQLException ex) {
System.out.println("Something went wrong...");
}
return låtar;
}
private ArrayList<String> getLåtar1 () {
ArrayList<String> låtar = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://vhost6.lnu.se:23306/1ik013v20-12?useSSL=false",
"1ik013v20-12", "aubergine")) {
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT Namn FROM album WHERE Artist = 'Bob Marley'");
while (result.next()) {
låtar.add(result.getString(1));
}
} catch (SQLException ex) {
System.out.println("Something went wrong...");
}
return låtar;
}
private ArrayList<String> getLåtar2 () {
ArrayList<String> låtar = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://vhost6.lnu.se:23306/1ik013v20-12?useSSL=false",
"1ik013v20-12", "aubergine")) {
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT Namn FROM album WHERE Artist = 'Bob Marley'");
while (result.next()) {
låtar.add(result.getString(1));
}
} catch (SQLException ex) {
System.out.println("Something went wrong...");
}
return låtar;
}
private ArrayList<String> getLåtar3 () {
ArrayList<String> låtar = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(
"jdbc:mysql://vhost6.lnu.se:23306/1ik013v20-12?useSSL=false",
"1ik013v20-12", "aubergine")) {
Statement statement = conn.createStatement();
ResultSet result = statement.executeQuery("SELECT Namn FROM album WHERE Artist = 'Bob Marley'");
while (result.next()) {
låtar.add(result.getString(1));
}
} catch (SQLException ex) {
System.out.println("Something went wrong...");
}
return låtar;
}
@Override
public void start(Stage primaryStage) {
BorderPane pane = new BorderPane();
ListView art = new ListView();
art.getItems().addAll(getArtister());
ListView alb = new ListView();
ListView alb1 = new ListView();
ListView alb2 = new ListView();
ListView alb3 = new ListView();
art.getSelectionModel().selectedIndexProperty().addListener(ov -> {
});
Text text = new Text("MUSIK");
text.setFont(new Font(20));
text.setFill(Color.DARKBLUE);
pane.setLeft(art);
pane.setTop(text);
BorderPane.setAlignment(art, Pos.CENTER_LEFT);
BorderPane.setAlignment(text, Pos.TOP_LEFT);
Scene scene = new Scene(pane, 500, 500);
primaryStage.setTitle("Musiken");
primaryStage.setScene(scene);
primaryStage.show();
}
}
【问题讨论】:
-
在命名方法和变量时始终使用拉丁字符
-
抱歉,刚接触编程!
-
不用担心。顺便说一句,你的方法似乎有点不寻常。您想为 4 位不同的艺术家创建 4 个不同的列表,对吗?如果你有 100 位艺术家呢?你必须想得更有活力。您可以将单个集合作为 Pair
,而第一个字符串是艺术家,第二个字符串是专辑。 -
好的,我明白了。我不必有 4 个不同的列表,它只是我现在所在的位置。最初的想法是有两个列表,一个是艺术家,一个是艺术家的歌曲。我在(艺术家)列表中按下的艺术家确定了另一个列表应该显示的内容。
-
解决方案有效吗?
标签: java mysql listview javafx