gpt4 book ai didi

java - JList 未显示在 JScrollPane 上

转载 作者:行者123 更新时间:2023-11-29 02:03:07 25 4
gpt4 key购买 nike

我正在为一家家族企业开发一个程序,该程序将管理来自其原 Material 供应商的小册子。我发现你需要所有的代码,所以我把它贴在了 pastebin 上。 http://pastebin.com/Gc3aLe10

但是,在这里我附上我认为问题所在的地方:

tnBuscar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

String search = searchField.getText();
Connection con = null;
java.sql.Statement st = null;
ResultSet rs = null;

String url = "jdbc:mysql://localhost:3306/";
String db = "FAVEGA";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "";
try {
Class.forName(driver);
con = DriverManager.getConnection(url + db, user, pass);
con.setAutoCommit(false);
st = con.createStatement();
String sql = "SELECT * FROM catalogos WHERE id = '" + search + "' OR name LIKE '%" + search + "%' OR keywords LIKE '%" + search + "%'";
rs = st.executeQuery(sql);
while (rs.next()) {
final String resultName = rs.getString("name");
buffer.add(resultName);
}
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
btnEditar.setVisible(true);
btnReiniciar.setVisible(true);
final JList list = new JList(buffer.toArray());
final JScrollPane scrollPane = new JScrollPane(list);
scrollPane.add(list);
scrollPane.setViewportBorder(new LineBorder(new Color(0, 0, 0)));
scrollPane.setBounds(67, 195, 269, -143);
buscarPanel.add(scrollPane);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBounds(0, 0, 435, 240);

scrollPane.setPreferredSize(new Dimension(70, 80));
list.setLayoutOrientation(JList.VERTICAL);
buscarPanel.invalidate();
buscarPanel.validate();
btnEditar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(list.getSelectedValue() != null){
String selectedValue = (String) list.getSelectedValue();
tab.setSelectedIndex(2);
btnReiniciar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
scrollPane.setVisible(false);
btnEditar.setVisible(false);
btnReiniciar.setVisible(false);
}
});
}
}
});
}
}
});

此按钮在我的数据库中搜索项目,但不知何故在运行时不会加载 JList。问题是什么?PS:没有运行时错误,没有 Stacktrace。

最佳答案

  1. 不要重新创建整个 GUI,

  2. 使用 XxxListModel而不是删除 JComponents 并将其添加到 JPanel

  3. XxxModel must be done on EDT 的所有更新

  4. 右边的 finally block 总是被触发,但不是创建 GUI 的正确位置

  5. 必须调用 revalidate()repaint() 如果您删除然后添加 JComponent 从/到已经可见容器

关于java - JList 未显示在 JScrollPane 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com