我正在使用Net-beans,因此,我在一个面板中的一帧中有40个组合框。 因此,为了方便起见,我调整了其中8个的大小,然后将面板上的所有8个组合框复制并粘贴了5次。但是,在运行时,每当我选择1个组合框说要索引2时,它们中的所有其他40个对象也会自动选择要索引2。
因此,我进行了一些测试,发现当我删除以下这段代码时,所有JComboBoxes都可以正常工作。这是代码...
public void MoveToComboBox()
{
try
{
Class.forName("java.sql.Driver");
Connection conn= (Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/teacher?zeroDateTimeBehavior=convertToNull","root","1234");//standard
PreparedStatement pst=conn.prepareStatement("Select * from sections");
DefaultComboBoxModel dcm=new DefaultComboBoxModel();
ResultSet rs=pst.executeQuery();
while(rs.next())
{
String a=rs.getString("section");
dcm.addElement(a);
}
d11.setModel(dcm);
d12.setModel(dcm);
d13.setModel(dcm);
d14.setModel(dcm);
d15.setModel(dcm);
d16.setModel(dcm);
d17.setModel(dcm);
d18.setModel(dcm); //these are just 8 of them rest 40 are all like this just like this
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"Please Prepare the data for first use first.");
}
}
我创建了一种方法,该方法可以从称为表节的SQL表中获取数据,并将其设置在所有组合框上 然后在激活的窗口中运行此方法...
private void f3WindowActivated(java.awt.event.WindowEvent evt) {
f3.setLocationRelativeTo(null);
MoveToComboBox(); // <-- This is the code if I comment this everything works fine
t1.requestFocus();
}
是的,出现了镜像组合框的问题;
答案 0 :(得分:1)
数据模型将具有一个或多个视图作为侦听器和模型更改器。模型是否更改,所有视图都会更改(在接收到更改事件时)。在这种情况下,模型:
在您的情况下,创建N个DefaultComboBoxModels并仅共享数据:
Vector<String> sections = new Vector<>();
try (Connection conn = DriverManager.getConnection(...);
PreparedStatement pst = conn.prepareStatement("SELECT section FROM sections");
ResultSet rs = pst.executeQuery()) {
while(rs.next()) {
String s = rs.getString(1);
sections.add(s);
}
}
d11.setModel(new DefaultComboBoxModel(sections));
d12.setModel(new DefaultComboBoxModel(sections));
d13.setModel(new DefaultComboBoxModel(sections));
...
以上,我使用了一个丑陋的 try-with-resources 构造,以确保在最后调用以下内容:
(这是因为所有对象都可以自动关闭。)
您也可以在末尾显式调用它们。
Class.forName
仅用于加载MySQL产品,因为在编译过程中不需要(或需要事件)导入MySQL特定的驱动程序。但是,如今并不需要,因为可以动态找到JDBC数据库驱动程序。
而且您的Class.forName没有加载MySQL类。
请注意,Vector类较旧,但适合使用DefaultComboBoxModel(Vector)
。