Pessoal, estou precisando fazer uma lista com alguns resultados retornados por uma busca em um banco de dados.
Coloquei esses resultados (os resultados são nomes de pessoas) em uma Text Area, e preciso que, ao clicar sobre um dos nomes, essa string seja passada para uma outra classe.
a classe connection é só uma classe que faz uma conexão permanente com o banco.
Desse jeito, não consegui fazer o que eu queria, que era clicar sobre um dos registros e passar a string pra outra classe.
Andei dando uma procurada pelo google e vi que talvez seja mais interessante criar uma JList ou um JComboBox, mas não consegui preencher nenhum dos dois com os resultados vindos do banco.
Alguém poderia me ajudar, ou me dar alguma idéia ?
Você pode usar JList, JComboBox ou ate mesmo JTable…cada um deles tem seu proprio DefaulModel…por exemplo…no caso do JComboBox exste o DefaltComboModel…sendo assim você pode criar um novo modelo:
DefaultComboModel model = seuJComboBoxAtual.getModel();
model.removeAll();
model.addElement(Object);
seuJComboBoxAtual.setModel(model);
Dessa forma você atualiza os valores que irão aparecer no ComboBox, que inclusive podem ser provenientes de um banco de dados…para os outros casos procure saber sobre seus Models e como alterá-los
Pessoal, fiz uma coisa que era quase o que eu estava querendo.
Fiz esse código abaixo, que dá pra eu selecionar uma linha da minha lista e clicar sobre o botão e ele adiciona esse item no banco.
Eu queria que o item fosse adicionado quando eu clico sobre ele, e que quando eu clicasse com o botao direito abrisse uma janela com algumas opções.
Como eu faço para criar esses eventos quando eu clico sobre um elemento da lista?
O programa que eu fiz pega o resultado que vem de um banco de dados, mostra numa lista e permite que você insira qualquer um desses itens de volta no banco, só como exemplo, para tentar usar esses eventos e tals…
import java.awt.*;
import java.awt.event.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
import javax.swing.event.*;
public class selectNames1 extends JPanel
implements ListSelectionListener {
private JList list;
private DefaultListModel listModel;
private static final String fireString = "Adicionar";
private JButton fireButton;
public selectNames1() {
super(new BorderLayout());
selectNames sel = new selectNames();
String results = sel.select();
String[] str = results.split(":");
listModel = new DefaultListModel();
for (int i = 0; i < str.length; i++){
listModel.addElement(str[i]);
}
list = new JList(listModel);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setSelectedIndex(0);
list.addListSelectionListener(this);
list.setVisibleRowCount(5);
JScrollPane listScrollPane = new JScrollPane(list);
fireButton = new JButton(fireString);
fireButton.setActionCommand(fireString);
fireButton.addActionListener(new FireListener());
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane,
BoxLayout.LINE_AXIS));
buttonPane.add(fireButton);
buttonPane.add(Box.createHorizontalStrut(5));
buttonPane.add(new JSeparator(SwingConstants.VERTICAL));
buttonPane.add(Box.createHorizontalStrut(5));
buttonPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
add(listScrollPane, BorderLayout.CENTER);
add(buttonPane, BorderLayout.PAGE_END);
}
class FireListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
int index = list.getSelectedIndex();
ResultSet rs = null;
Statement stmt = null;
Object obj = list.getSelectedValue();
String str = (String)obj;
try {
String sql = "insert into paciente values ('"+str+"')";
stmt = connection.getConnection().createStatement();
int update = stmt.executeUpdate(sql);
}
catch (SQLException e1) {
JOptionPane.showMessageDialog(null, "SQLException");
}
catch (Exception e2) {
JOptionPane.showMessageDialog(null, "Exception");
}
int size = listModel.getSize();
if (size == 0) { //Nobody's left, disable firing.
fireButton.setEnabled(false);
} else {
list.setSelectedIndex(index);
list.ensureIndexIsVisible(index);
}
}
}
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting() == false) {
if (list.getSelectedIndex() == -1) {
fireButton.setEnabled(false);
} else {
fireButton.setEnabled(true);
}
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Pacientes");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new selectNames1();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public void run() {
createAndShowGUI();
}
}