J'ai un projet en Java utilisant la base de données MySQL. Ma base de données a une table "Réponses" et je dois permettre aux utilisateurs de voter (+1 ou -1) si la réponse est bonne ou mauvaise. L'utilisateur ne peut voter qu'une seule fois pour une réponse.Notes de flèche dans JTable
EDIT: Voici mon code pour les réponses d'affichage pour la question choisie:
private void showAnswer(String chosenString) {
editAnswer = new JButton("Edit");
deleteAnswer = new JButton("Delete");
editAnswer.addActionListener(this);
deleteAnswer.addActionListener(this);
JPanel commentsPanel = new JPanel();
answerFrame = new JFrame();
answerFrame.setLayout(new BorderLayout());
JLabel questionText = new JLabel(chosenString);
arrowNorth = new BasicArrowButton(BasicArrowButton.NORTH);
arrowSouth = new BasicArrowButton(BasicArrowButton.SOUTH);
arrowNorth.addActionListener(this);
arrowSouth.addActionListener(this);
answerFrame.add(questionText, BorderLayout.NORTH);
tableInsideModel = new ResultSetTableModel(null);
tableInside = new JTable(tableInsideModel);
JScrollPane tableScroll = new JScrollPane(tableInside);
answerFrame.add(tableScroll);
String query = "select a_id, answer, nickname, a.add_date from answers a inner join users on au_id=u_id where aq_id="
+ "(select q_id from questions where question='"+chosenString+"')";
sendInsideQuery(query);
tableInside.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2){
JTable target = (JTable) e.getSource();
int row = target.getSelectedRow();
doubleClickValue = (int) tableInsideModel.getValueAt(row, 0);
String doubleClickText = (String) tableInsideModel.getValueAt(row, 1);
doubleClickWindow(doubleClickValue, doubleClickText);
}
}
public void mouseReleased(MouseEvent er){
int r = tableInside.rowAtPoint(er.getPoint());
if(r>= 0 && r<tableInside.getRowCount()){
tableInside.setRowSelectionInterval(r, r);
}else{
tableInside.clearSelection();
}
int rowindex = tableInside.getSelectedRow();
if(rowindex<0)
return;
if(er.isPopupTrigger() && er.getComponent() instanceof JTable){
popupInside = new JPopupMenu();
popupInside.add(editAnswer);
popupInside.add(deleteAnswer);
popupInside.show(er.getComponent(), er.getX(), er.getY());
}
}
});
JButton buttonReturn = new JButton("Back");
buttonReturn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
answerFrame.setVisible(false);
}
});
JButton buttonAddAnswer = new JButton("Add Answer");
buttonAddAnswer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
newAnswer(chosenString);
}
});
commentsPanel.add(buttonAddAnswer,BorderLayout.CENTER);
commentsPanel.add(buttonReturn,BorderLayout.CENTER);
commentsPanel.add(arrowNorth, BorderLayout.WEST);
commentsPanel.add(arrowSouth, BorderLayout.WEST);
answerFrame.add(commentsPanel,BorderLayout.SOUTH);
answerFrame.setVisible(true);
answerFrame.setSize(1000, 500);
answerFrame.setLocationRelativeTo(null);
}
Voici mon problème: Comment puis-je forcer base de données MySQL à « se souvenir » quel utilisateur voté pour quelle réponse? Y at-il une option pour ajouter des flèches (haut et bas) à toutes les lignes JTable? Ou devrais-je faire seulement 2 flèches (comme ci-dessus) sur le bas de l'interface graphique et avec TableModel.getValueAt();
choisir une réponse à voter pour?
J'aurais dû être plus prudent. S'il vous plaît nous montrer un exemple de ce que vous avez essayé. Un [mcve] vaut mieux que simplement fournir le code entier. Ici, il y a beaucoup d'interface graphique non utile pour la question. – AxelH
Je n'ai rien essayé, parce que je ne sais pas comment j'ai pu résoudre ça – najdzion15
Je l'ai fait. Je sais comment l'ajouter, mais je ne sais pas comment protéger ce projet pour multi-vote une question par un utilisateur – najdzion15