Я новичок-программист, и я пытался создать базовую оконную программу с помощью Swing и базы данных SQL. Мне удалось заставить соединение работать и создать некоторые формы, которые позволяют обновлять базу данных, но я не могу найти способ просто заполнить JList в зависимости от того, какой вариант вы выбираете из ComboBox. В частности, в моей базе данных есть две таблицы (среди прочих), одна из которых называется «SERIES», а другая - «CLASS», а мой графический интерфейс имеет JPanel, где вы можете выбрать серию из ComboBox, которая должна отображать соответствующие классы в JList ниже.Заполните JList с записями базы данных при выборе из ComboBox
Вот мой основной код (я не вставить сгенерированный переменные декларации и «initComponents()» метод, а просто спросить, если вам нужно), а затем текущее состояние соответствующего метода:
package dahouetgui;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
/**
*
* @author Antoine
*/
public class GUI extends javax.swing.JFrame
{
static Connection con = null;
/**
* Creates new form DahouetGUI
* @throws java.lang.ClassNotFoundException
*/
public GUI() throws ClassNotFoundException
{
setTitle("Dahouet Case");
initComponents();
try
{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dahouet","root","");
try
{
Statement requete1 = con.createStatement();
ResultSet resultat1 = requete1.executeQuery("select * from SERIES");
while(resultat1.next())
{
jcbSer.addItem(resultat1.getString("LIBSER"));
}
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
try
{
Statement requete2 = con.createStatement();
ResultSet resultat2 = requete2.executeQuery("select * from SERIES");
while(resultat2.next())
{
jcbSerChoice.addItem(resultat2.getString("LIBSER"));
}
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
try
{
Statement requete3 = con.createStatement();
ResultSet resultat3 = requete3.executeQuery("select * from CLASS");
while(resultat3.next())
{
jcbClaChoiceDel.addItem(resultat3.getString("LIBCLA"));
}
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
}
private void jcbSerActionPerformed(java.awt.event.ActionEvent evt)
{
try
{
Statement requete = con.createStatement();
try
{
ResultSet resultat = requete.executeQuery("select * from CLASS inner join SERIES on CLASS.CODSER = SERIES.CODSER "
+ "where LIBSER = '" + jcbSer.getSelectedItem().toString() + "'");
resultat.next();
jlsCla.setList(resultat.("LIBCLA"));
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
}
Как вы можете видеть, что я даже не знаю, какой вид «установить/получить» использовать, или даже если это правильный способ сделать это (я после модели TextField .. .). Хотя я также видел вещи о DefaultListModel, но я не знаю точно, что он делает, и в любом случае я не знаю, как его использовать.
Спасибо.
PS: здесь нет вежливости? Мой «привет» автоматически удаляется ...:/
EDIT: Вот окончательный код для моего метода, то:
private void jcbSerActionPerformed(java.awt.event.ActionEvent evt)
{
javax.swing.DefaultListModel<String> dlmCla;
dlmCla = new javax.swing.DefaultListModel();
try
{
Statement requete = con.createStatement();
try
{
ResultSet resultat = requete.executeQuery("select * from CLASS inner join SERIES on CLASS.CODSER = SERIES.CODSER "
+ "where LIBSER = '" + jcbSer.getSelectedItem().toString() + "'");
while(resultat.next())
{
dlmCla.addElement(resultat.getString("LIBCLA"));
}
jlsCla.setModel(dlmCla);
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
}
catch(SQLException e)
{
System.out.println("SQLException " + e.getMessage());
}
}
И почему я так долго ждал публикации здесь ... Большое спасибо, это было именно то, что мне нужно. : D Теперь мне нужно немного вникнуть в этот DefaultListModel, чтобы понять, как это работает. – ButchOverflow
@ButchOverflow: рад, что у вас все работает. Если у вас есть дополнительные вопросы, пожалуйста, спросите. –