【发布时间】:2015-08-02 03:54:33
【问题描述】:
我被困在这里,只看到一个我试图避免的解决方案,因为它会使我的代码看起来很混乱。我在一个班级中有一个 JComboBox.addPopupMenuListener。我有另一个实现 addPopupMenuListener 的类。在另一个类中,我从数据库中提取项目并将它们存储在一个列表中。
我现在完全不知道如何将此列表中的项目添加到 JComboBox。有什么想法吗?
问题 - 虽然我已经声明了 JComboBox 组合框;作为公众,我无法在实现类中使用此组合框。我该怎么办?以下是代码-
package tg.com.bugtracker.loginpage;
import java.awt.*;
import javax.swing.*;
public class LoginPanel extends JPanel {
public JComboBox<String> combobox;
public LoginPanel() {
GridBagLayout layout = new GridBagLayout();
setLayout(layout);
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 1;
constraints.gridy = 0;
constraints.insets = new Insets(10,10,10,10);
constraints.anchor = GridBagConstraints.LINE_START;
combobox = new JComboBox<>();
combobox.setPreferredSize(new Dimension(250, 20));
combobox.addPopupMenuListener(new loginNames());
add(combobox, constraints);
}
}
实现类 -
package tg.com.bugtracker.loginpage;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
import java.sql.*;
import java.util.List;
public class loginNames implements PopupMenuListener{
@Override
public void popupMenuCanceled(PopupMenuEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent arg0) {
// TODO Auto-generated method stub
}
public List<String> loginNames;
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent arg0) {
String URL = "jdbc:ucanaccess://C:\\Users\\bharat.nanwani\\Desktop\\BugTrackerDB.accdb";
ResultSet rs;
PreparedStatement p;
String sqlquery = "SELECT FirstName FROM UserDetails;";
try {
Connection cnn = DriverManager.getConnection(URL);
p = cnn.prepareStatement(sqlquery);
rs = p.executeQuery();
rs.close();
p.close();
while (rs.next()) {
String names = rs.getString("FirstName");
loginNames.add(names);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
了解ComboBoxModel,这是向 JComboBox 提供数据的地方。
-
对不起。我只是想知道为什么我不能在我的实现类中使用组合框(我已声明为公共)?
-
loginNames需要对 JComboBox(或其模型)的引用才能将项目添加到 JComboBox -
@Bharat Nanwani Swing 遵循 MVC 模式。在这种情况下:Model=ComboBoxModel、View=JComboBox、Controller=AnyKindOfListeners。
标签: java swing jcombobox resultset implements