Ошибка при попытки записать данные в Label из ComboBoxe - Java
Формулировка задачи:
Доброго времени суток!
Суть программки. В комбобокс попадают все данные пользователей, котоыре есть в БД, после выбора конкретного пользователя хотел что бы имя этого пользователя прописывалась в Label.
Не могу понять как это можно реализовать правильно.
Заранее спасибо за помощь.
Ошибка тут:
А это весь код.
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox box = (JComboBox)e.getSource();
String item = (String)box.getSelectedItem();
label.setText(item);
}
};package gui_1;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.sql.*;
import java.util.Vector;
public class Combobox extends JFrame{
private JComboBox<Object> faceCombo;
private JLabel label;
private static final int DEFAULT_SIZE = 24;
public Combobox(){
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
Vector<Object> columnNames = new Vector<Object>();
Vector<Object> data = new Vector<Object>();
try
{
// Connect to an Access Database
String url = "jdbc:sqlserver://LOCAL";
con = DriverManager.getConnection(url, "LOG", "PASS");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT name FROM users");
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
// Get row data
while (rs.next())
{
Vector<String> row = new Vector<String>(columns);
for (int i = 1; i <= columns; i++)
{
row.addElement( (String) rs.getObject(i) );
}
data.addElement( row );
}
rs.close();
stmt.close();
con.close();
}
catch(Exception e)
{
System.out.println( e );
}
// END DataBase
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = getContentPane();
label = new JLabel ("Empty label!");
label.setFont(new Font("Serif", Font.PLAIN, DEFAULT_SIZE));
content.add(label, BorderLayout.CENTER);
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox box = (JComboBox)e.getSource();
String item = (String)box.getSelectedItem();
label.setText(item);
}
};
faceCombo = new JComboBox(data); // Add information from DB to ComboBox
faceCombo.addActionListener(actionListener);
JPanel comboPanel = new JPanel();
comboPanel.add(faceCombo);
add(comboPanel, BorderLayout.SOUTH);
setPreferredSize(new Dimension(600, 300));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Combobox cmb = new Combobox();
cmb.pack();
cmb.setLocationRelativeTo(null);
cmb.setVisible(true);
}
}Решение задачи: «Ошибка при попытки записать данные в Label из ComboBoxe»
textual
Листинг программы
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.*;
/**
*
* @author Nicholas White
*/
public class Combobox extends JFrame {
private JComboBox<Object> faceCombo;
private JLabel label;
private static final int DEFAULT_SIZE = 24;
public Combobox() throws SQLException {
Connection con = getConnection();
PreparedStatement stmt = con.prepareStatement("SELECT name FROM users");
ResultSet rs = stmt.executeQuery();
Vector<String> data = new Vector<String>();
while (rs.next()) {
data.add(rs.getString("name"));
}
JPanel content = new JPanel(new BorderLayout());
label = new JLabel ("Empty label!");
label.setFont(new Font("Serif", Font.PLAIN, DEFAULT_SIZE));
content.add(label, BorderLayout.NORTH);
faceCombo = new JComboBox(data);
faceCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String s = faceCombo.getSelectedItem().toString();
label.setText(s);
}
});
content.add(faceCombo, BorderLayout.SOUTH);
setContentPane(content);
setPreferredSize(new Dimension(600, 300));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) throws SQLException {
Combobox cmb = new Combobox();
cmb.pack();
cmb.setLocationRelativeTo(null);
cmb.setVisible(true);
}
private Connection getConnection() {
try{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mynewdatabase";
String password = "PWord[]2208";
String userName = "root";
Class.forName(driver);
Connection conn = (Connection) DriverManager.getConnection(url, userName, password);
System.out.println("Connected");
return conn;
} catch(Exception e) {System.err.println(e);}
return null;
}
}