请帮我写一个SceneBuilder的Javafx实现的输入账号,在数据库中表(id,图像)进行查找,返回一张图片并在界面上显示
时间: 2024-04-10 18:28:36 浏览: 252
在界面上显示Oracle数据库中的图片
5星 · 资源好评率100%
好的,我可以为您编写一个使用Scene Builder和JavaFX实现的界面,用于输入账号并在数据库中查找对应的图片并显示在界面上。请按照以下步骤进行操作:
1. 首先,确保您已经安装了JavaFX Scene Builder和IntelliJ IDEA,并已经正确配置了JavaFX环境。
2. 在Scene Builder中创建一个新的FXML文件,命名为`image_viewer.fxml`。然后,使用Scene Builder设计一个简单的界面,包含一个输入框、一个按钮和一个ImageView组件。将FXML文件中的根节点设置为`AnchorPane`,并添加适当的布局和样式。
3. 将以下代码添加到`Main.java`文件中:
```java
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("image_viewer.fxml"));
primaryStage.setTitle("Image Viewer");
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
4. 创建一个名为`DatabaseManager.java`的Java类,用于连接数据库并执行查询操作。根据您的实际数据库设置进行相应的更改。以下是一个示例代码:
```java
import java.sql.*;
public class DatabaseManager {
private static final String DB_URL = "jdbc:mysql://localhost:3306/your_database_name";
private static final String DB_USERNAME = "your_username";
private static final String DB_PASSWORD = "your_password";
public static Image findImage(String username) {
try {
Connection conn = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
PreparedStatement stmt = conn.prepareStatement("SELECT image FROM your_table_name WHERE id = ?");
stmt.setString(1, username);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
Blob blob = rs.getBlob("image");
return new Image(blob.getBinaryStream());
}
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
```
5. 在Scene Builder中打开`image_viewer.fxml`文件,并为每个组件设置适当的ID。例如,为输入框设置ID为`usernameField`,为按钮设置ID为`searchButton`,为ImageView设置ID为`imageView`。
6. 创建一个名为`ImageViewerController.java`的Java类,用于处理界面上的事件和逻辑。以下是一个示例代码:
```java
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class ImageViewController {
@FXML
private TextField usernameField;
@FXML
private ImageView imageView;
@FXML
private void searchButtonClicked() {
String username = usernameField.getText();
// 在数据库中查找图像
Image image = DatabaseManager.findImage(username);
if (image != null) {
imageView.setImage(image);
} else {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText(null);
alert.setContentText("Image not found!");
alert.showAndWait();
}
}
}
```
7. 在Scene Builder中选择根节点,然后在右侧的"Code"选项卡中找到"Controller"字段,并将其设置为`ImageViewController`。
现在,您可以尝试运行该应用程序,输入账号并点击搜索按钮,应该能够从数据库中找到对应的图片并显示在界面上。
请注意,这只是一个简单的示例,您可能需要根据实际需求进行更多的界面设计和数据库操作。同时,您需要根据实际情况修改数据库连接参数和查询语句。希望这能帮助到您!
阅读全文