第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 JTable 中的 MySql 表中右鍵單擊刪除行

從 JTable 中的 MySql 表中右鍵單擊刪除行

慕運(yùn)維8079593 2023-06-14 10:46:40
我有一個 Java 類,如下所示,它顯示我的數(shù)據(jù)庫中的表。我想添加一個將打開彈出菜單并從表中刪除行的功能。我怎樣才能做到這一點(diǎn)?? ? import java.awt.BorderLayout;? ? import javax.swing.*;? ? import java.sql.*;? ? import java.util.Vector;? ? public class Test {? ? ? ? public static void main(String[] args) {? ? ? ? ? ? Connection con = null;? ? ? ? ? ? Statement st = null;? ? ? ? ? ? ResultSet rs = null;? ? ? ? ? ? String s;? ? ? ? ? ? try {? ? ? ? ? ? ? ? con = DriverManager.getConnection("jdbc:mysql://localhost/sms", "root", "");? ? ? ? ? ? ? ? st = con.createStatement();? ? ? ? ? ? ? ? s = "select * from sent_messages";? ? ? ? ? ? ? ? rs = st.executeQuery(s);? ? ? ? ? ? ? ? ResultSetMetaData rsmt = rs.getMetaData();? ? ? ? ? ? ? ? int c = rsmt.getColumnCount();? ? ? ? ? ? ? ? Vector column = new Vector(c);? ? ? ? ? ? ? ? for (int i = 1; i <= c; i++) {? ? ? ? ? ? ? ? ? ? column.add(rsmt.getColumnName(i));? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? Vector data = new Vector();? ? ? ? ? ? ? ? Vector row = new Vector();? ? ? ? ? ? ? ? while (rs.next()) {? ? ? ? ? ? ? ? ? ? row = new Vector(c);? ? ? ? ? ? ? ? ? ? for (int i = 1; i <= c; i++) {? ? ? ? ? ? ? ? ? ? ? ? row.add(rs.getString(i));? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? data.add(row);? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? JFrame frame = new JFrame();? ? ? ? ? ? ? ? frame.setSize(500, 600);? ? ? ? ? ? ? ? frame.setLocationRelativeTo(null);? ? ? ? ? ? ? ? frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);? ? ? ? ? ? ? ? JPanel panel = new JPanel();? ? ? ? ? ? ? ? JTable table = new JTable(data, column);? ? ? ? ? ? ? ? JScrollPane jsp = new JScrollPane(table);? ? ? ? ? ? ? ? panel.setLayout(new BorderLayout());? ? ? ? ? ? ? ? ? ? panel.add(jsp, BorderLayout.CENTER);? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? frame.setContentPane(panel);? ? ? ? ? ? ? ? ? ? frame.setVisible(true);? ? ? ? ? ? ? ? } catch (Exception e) {? ? ? ? ? ? ? ? ? ? JOptionPane.showMessageDialog(null, "ERROR");? ? ? ? ? ? }?
查看完整描述

1 回答

?
紅糖糍粑

TA貢獻(xiàn)1815條經(jīng)驗 獲得超6個贊

我必須處理代碼并將其重寫為如下所示的 3 個類:

JTablePopupMenuExample.java

? ? import java.awt.BorderLayout;

? ? import java.awt.event.ActionEvent;

? ? import java.awt.event.ActionListener;

? ? import java.beans.Statement;

? ? import java.sql.Connection;

? ? import java.sql.DriverManager;

? ? import java.sql.ResultSet;

? ? import java.sql.ResultSetMetaData;

? ? import java.sql.SQLException;

? ? import java.util.ArrayList;

? ? import java.util.List;

? ? import java.util.Vector;


? ? import javax.swing.JFrame;

? ? import javax.swing.JMenuItem;

? ? import javax.swing.JPanel;

? ? import javax.swing.JPopupMenu;

? ? import javax.swing.JScrollPane;

? ? import javax.swing.JTable;

? ? import javax.swing.SwingUtilities;

? ? import javax.swing.table.DefaultTableModel;


? ? public class JTablePopupMenuExample extends JFrame implements ActionListener {



? ? ? ? private JTable table;

? ? ? ? private DefaultTableModel tableModel;?

? ? ? ? private JPopupMenu popupMenu;

? ? ? ? private JMenuItem menuItemAdd;

? ? ? ? private JMenuItem menuItemRemove;

? ? ? ? private JMenuItem menuItemRemoveAll;

? ? ? ? List<SentMessagesTable> msgList;


? ? ? ? public JTablePopupMenuExample() throws Exception{

? ? ? ? ? ? super("JTable Popup Menu Example");


? ? ? ? ? ? // sample table data

? ? ? ? ? ? String[] columnNames = new String[] {"id", "receiver", "sender", "msg_text", "status", "x_date"};




? ? ? ? ? ? msgList = new ArrayList<SentMessagesTable>();



? ? ? ? ? ? ResultSet rs = getTableRows();??



? ? ? ? ? ? while (rs.next()) {


? ? ? ? ? ? ? ? SentMessagesTable msg = new SentMessagesTable();


? ? ? ? ? ? ? ? msg.setId(rs.getInt("id"));

? ? ? ? ? ? ? ? msg.setReceiver(rs.getString("receiver"));

? ? ? ? ? ? ? ? msg.setSender(rs.getString("sender"));

? ? ? ? ? ? ? ? msg.setMsgText(rs.getString("msg_text"));

? ? ? ? ? ? ? ? msg.setStatus(rs.getString("status"));

? ? ? ? ? ? ? ? msg.setxDate(rs.getString("x_date"));


? ? ? ? ? ? ? ? msgList.add(msg);


? ? ? ? ? ? }


? ? ? ? ? ? String[][] rowDataTable = new String[34400][6];


? ? ? ? ? ? for(int i = 0 ; i < msgList.size();i++) {

? ? ? ? ? ? ? ? //burda jtable listesini doldur

? ? ? ? ? ? ? ? rowDataTable[i][0] = String.valueOf(msgList.get(i).getId());

? ? ? ? ? ? ? ? rowDataTable[i][1] = msgList.get(i).getReceiver();

? ? ? ? ? ? ? ? rowDataTable[i][2] = msgList.get(i).getSender();

? ? ? ? ? ? ? ? rowDataTable[i][3] = msgList.get(i).getMsgText();

? ? ? ? ? ? ? ? rowDataTable[i][4] = msgList.get(i).getStatus();

? ? ? ? ? ? ? ? rowDataTable[i][5] = msgList.get(i).getxDate();?

? ? ? ? ? ? }


? ? ? ? ? ? // constructs the table with sample data

? ? ? ? ? ? tableModel = new DefaultTableModel(rowDataTable, columnNames);

? ? ? ? ? ? table = new JTable(tableModel);


? ? ? ? ? ? // constructs the popup menu

? ? ? ? ? ? popupMenu = new JPopupMenu();

? ? ? ? ? ? menuItemAdd = new JMenuItem("Add New Row");

? ? ? ? ? ? menuItemRemove = new JMenuItem("Remove Current Row");

? ? ? ? ? ? menuItemRemoveAll = new JMenuItem("Remove All Rows");


? ? ? ? ? ? menuItemAdd.addActionListener(this);

? ? ? ? ? ? menuItemRemove.addActionListener(this);

? ? ? ? ? ? menuItemRemoveAll.addActionListener(this);


? ? ? ? ? ? popupMenu.add(menuItemAdd);

? ? ? ? ? ? popupMenu.add(menuItemRemove);

? ? ? ? ? ? popupMenu.add(menuItemRemoveAll);


? ? ? ? ? ? // sets the popup menu for the table

? ? ? ? ? ? table.setComponentPopupMenu(popupMenu);


? ? ? ? ? ? table.addMouseListener(new TableMouseListener(table));


? ? ? ? ? ? // adds the table to the frame

? ? ? ? ? ? add(new JScrollPane(table));


? ? ? ? ? ? setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

? ? ? ? ? ? setSize(800,1000);

? ? ? ? ? ? setLocationRelativeTo(null);

? ? ? ? }


? ? ? ? public static void main(String[] args){? ? ? ? ? ? ?


? ? ? ? ? ? SwingUtilities.invokeLater(new Runnable() {

? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? ? ? try {

? ? ? ? ? ? ? ? ? ? ? ? new JTablePopupMenuExample().setVisible(true);

? ? ? ? ? ? ? ? ? ? } catch (Exception e) {

? ? ? ? ? ? ? ? ? ? ? ? // TODO Auto-generated catch block

? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? ? ? }


? ? ? ? @Override

? ? ? ? public void actionPerformed(ActionEvent event) {

? ? ? ? ? ? JMenuItem menu = (JMenuItem) event.getSource();

? ? ? ? ? ? if (menu == menuItemAdd) {

? ? ? ? ? ? ? ? addNewRow();

? ? ? ? ? ? } else if (menu == menuItemRemove) {

? ? ? ? ? ? ? ? removeCurrentRow();

? ? ? ? ? ? } else if (menu == menuItemRemoveAll) {

? ? ? ? ? ? ? ? removeAllRows();

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? private void addNewRow() {

? ? ? ? ? ? tableModel.addRow(new String[0]);

? ? ? ? }


? ? ? ? private void removeCurrentRow(){

? ? ? ? ? ? int selectedRow = table.getSelectedRow();

? ? ? ? ? ? tableModel.removeRow(selectedRow);




? ? ? ? ? ? String jdbcUrl = "jdbc:mysql://localhost/sms";

? ? ? ? ? ? String username = "root";

? ? ? ? ? ? String password = "";

? ? ? ? ? ? String sql = "delete from sent_messages where id = '"+msgList.get(selectedRow).getId()+"'";

? ? ? ? ? ?// java.sql.Statement stmt = null;


? ? ? ? ? ? try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password);?

? ? ? ? ? ? ? ? java.sql.Statement stmt = conn.createStatement();) {


? ? ? ? ? ? ? stmt.executeUpdate(sql);

? ? ? ? ? ? ? System.out.println("Record deleted successfully");

? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? // TODO Auto-generated catch block

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }? ?


? ? ? ? }


? ? ? ? private void removeAllRows() {

? ? ? ? ? ? int rowCount = tableModel.getRowCount();

? ? ? ? ? ? for (int i = 0; i < rowCount; i++) {

? ? ? ? ? ? ? ? tableModel.removeRow(0);

? ? ? ? ? ? }

? ? ? ? }



? ? ? ? private ResultSet getTableRows() throws SQLException {

? ? ? ? ? ? Connection con = null;

? ? ? ? ? ? java.sql.Statement st = null;

? ? ? ? ? ? ResultSet rs = null;

? ? ? ? ? ? String s;

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? con = DriverManager.getConnection("jdbc:mysql://localhost/sms", "root", "");

? ? ? ? ? ? ? ? st = con.createStatement();

? ? ? ? ? ? ? ? s = "select * from sent_messages";

? ? ? ? ? ? ? ? rs = ((java.sql.Statement) st).executeQuery(s);



? ? ? ? ? ? }catch(Exception e) {

? ? ? ? ? ? ? ? ? ? System.out.println(e.toString());

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ?finally {

? ? ? ? ? ? ? ? //con.close();

? ? ? ? ? ? }


? ? ? ? ? ? return rs;

? ? ? ? }

? ? }

SentMessagesTable.java其中涉及(getters and setters)




public class SentMessagesTable {


? ? int id;

? ? String receiver;

? ? String sender;

? ? String msgText;

? ? String status;

? ? String xDate;


? ? public int getId() {

? ? ? ? return id;

? ? }


? ? public void setId(int id) {

? ? ? ? this.id = id;

? ? }


? ? public String getReceiver() {

? ? ? ? return receiver;

? ? }


? ? public void setReceiver(String receiver) {

? ? ? ? this.receiver = receiver;

? ? }


? ? public String getSender() {

? ? ? ? return sender;

? ? }


? ? public void setSender(String sender) {

? ? ? ? this.sender = sender;

? ? }


? ? public String getMsgText() {

? ? ? ? return msgText;

? ? }


? ? public void setMsgText(String msgText) {

? ? ? ? this.msgText = msgText;

? ? }


? ? public String getStatus() {

? ? ? ? return status;

? ? }


? ? public void setStatus(String status) {

? ? ? ? this.status = status;

? ? }


? ? public String getxDate() {

? ? ? ? return xDate;

? ? }


? ? public void setxDate(String xDate) {

? ? ? ? this.xDate = xDate;

? ? }


}

和TableMouse Listener.java




import java.awt.Point;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;


import javax.swing.JTable;


public class TableMouseListener extends MouseAdapter {


? ? private JTable table;


? ? public TableMouseListener(JTable table) {

? ? ? ? this.table = table;

? ? }


? ? @Override

? ? public void mousePressed(MouseEvent event) {

? ? ? ? // selects the row at which point the mouse is clicked

? ? ? ? Point point = event.getPoint();

? ? ? ? int currentRow = table.rowAtPoint(point);

? ? ? ? table.setRowSelectionInterval(currentRow, currentRow);

? ? }

}


使用該代碼,我能夠從 JTable 以及我的數(shù)據(jù)庫中刪除記錄。


查看完整回答
反對 回復(fù) 2023-06-14
  • 1 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號