I have a project in JAVA using MySQL database. My database has "Answers" table and I need to allow users to vote (+1 or -1) if answer is good or bad. User can vote only once for one answer.
EDIT: Here is my code for display answers for choosen Question:
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);
}
Here is my problem:
How can I force MySQL database to "remember" which user voted for which answer?
Is there any option to add arrows (up and down) to all JTable rows?
Or should i make only 2 arrows (as above) on the bottom of GUI and with TableModel.getValueAt();
choose a Answer to vote for?