У меня возникли проблемы с обновлением данных внутри JComboBox
.Как обновить данные JComboBox?
У вас есть Create
, у которого есть ActionListener
, что добавляет предмет в JComboBox
.
Но изменения не отражаются в графическом интерфейсе: я все еще не вижу новый добавленный элемент.
repaint()
не помогает.
Update: Вот (почти) полный код GUI:
public class Main extends JFrame implements ActionListener
{
static Connection conn;
static PreparedStatement ps = null;
static ResultSet res;
static Statement sta;
private final static int ITERATION_NUMBER = 1000;
public void GUI() throws SQLException {
setBounds(0, 0, 320, 240);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
close(ps);
close(res);
close(conn);
System.exit(0);
}
});
setMinimumSize(new Dimension(320, 240));
setResizable(false);
this.setTitle("Accounts");
JPanel panel = new JPanel();
GridLayout2 GL = new GridLayout2(4,3);
GL.setHgap(10);
panel.setLayout(GL);
Font font = new Font("Serif", Font.BOLD, 20);
Font font2 = new Font("Courier New", Font.BOLD, 16);
JLabel label1 = new JLabel("Username");
JLabel label2 = new JLabel("Password");
JLabel label3 = new JLabel("Controls");
label1.setFont(font2);
label2.setFont(font2);
label3.setFont(font2);
final JTextField username = new JTextField();
final JTextField password1 = new JPasswordField();
final JTextField password2 = new JPasswordField();
final JComboBox userBox1 = new JComboBox();
final JComboBox userBox2 = new JComboBox();
JButton create = new JButton("CREATE");
create.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
try {
createUser(conn, username.getText(), password1.getText());
userBox1.addItem(username.getText());
userBox2.addItem(username.getText());
} catch (NoSuchAlgorithmException
| UnsupportedEncodingException | SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
userBox1.removeAllItems();
userBox2.removeAllItems();
res = (ResultSet) sta.executeQuery("SELECT LOGIN FROM ACCOUNTS");
String temp;
for (int i=0; res.next(); i++) {
temp = (String)res.getString("LOGIN");
userBox1.addItem(temp);
userBox2.addItem(temp);
}
panel.add(label1);
panel.add(label2);
panel.add(label3);
panel.add(username);
panel.add(password1);
panel.add(create);
panel.add(userBox1);
panel.add(password2);
panel.add(modify);
panel.add(userBox2);
panel.add(new JLabel(""));
panel.add(delete);
add(panel);
setVisible(true);
}
РЕШЕНИЕ: Добавление password1.setText (""); сразу после того, как «createUser» решил проблему! Это странно, может быть, это как-то освежил GUI ...
Не могли бы вы предоставить код? – Jack
Вы 'refesh'' 'панель или фрейм, для которого' JComboBox' является контейнером. – Subs
Перекраска почти не нужна. Компоненты знают, когда им приходится перекрашивать себя. –