在Java中實現下拉框的懶加載,可以使用JComboBox組件和SwingWorker類來實現。下面是一個簡單的示例代碼:
import javax.swing.*;
import java.awt.*;
import java.util.List;
import javax.swing.SwingWorker;
public class LazyLoadingComboBox extends JFrame {
private JComboBox<String> comboBox;
public LazyLoadingComboBox() {
comboBox = new JComboBox<>();
add(comboBox, BorderLayout.NORTH);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
SwingWorker<List<String>, Void> worker = new SwingWorker<List<String>, Void>() {
@Override
protected List<String> doInBackground() throws Exception {
// 模擬從數據庫或遠程接口加載數據的耗時操作
Thread.sleep(2000);
return List.of("Option 1", "Option 2", "Option 3");
}
@Override
protected void done() {
try {
List<String> options = get();
for (String option : options) {
comboBox.addItem(option);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
};
worker.execute();
}
public static void main(String[] args) {
new LazyLoadingComboBox();
}
}
在這個示例中,使用SwingWorker來在后臺加載下拉框的選項數據。在doInBackground方法中模擬加載數據的耗時操作,然后在done方法中將加載好的數據添加到下拉框中。這樣可以避免在UI線程中進行耗時操作,保持界面的流暢性。當用戶點擊下拉箭頭時,才會加載數據,實現了懶加載的效果。