2017-05-30 48 views
0

我正在使用Swing開發酒店預訂應用程序。如何選擇JTable中的其他行,如果其中一行被選中?

我的房間在JTable行的列表。如果我點擊任意一行,那麼如果用戶在特定日期預訂了該房間,則選擇的房間將進入預訂。之後,如果有人試圖在相同的日期預訂相同的房間,它必須顯示警告信息,或者如何從表格中隱藏該行?

import javax.swing.*; 
/** 
* 
* @author ssn 
*/ 
public class Reservation extends javax.swing.JFrame { 

    /** 
    * Creates new form Reservation 
    */ 
    public Reservation() { 
     initComponents(); 
    } 
    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jPanel2 = new javax.swing.JPanel(); 
     jPanel1 = new javax.swing.JPanel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     RentPerDay = new javax.swing.JTextField(); 
     BedType = new javax.swing.JTextField(); 
     RoomNo = new javax.swing.JTextField(); 
     RoomType = new javax.swing.JTextField(); 
     jLabel5 = new javax.swing.JLabel(); 
     jLabel6 = new javax.swing.JLabel(); 
     jLabel7 = new javax.swing.JLabel(); 
     jLabel8 = new javax.swing.JLabel(); 
     jLabel9 = new javax.swing.JLabel(); 
     jLabel10 = new javax.swing.JLabel(); 
     jLabel11 = new javax.swing.JLabel(); 
     jButton1 = new javax.swing.JButton(); 
     jLabel12 = new javax.swing.JLabel(); 
     jLabel13 = new javax.swing.JLabel(); 
     jLabel14 = new javax.swing.JLabel(); 
     jLabel15 = new javax.swing.JLabel(); 
     jLabel16 = new javax.swing.JLabel(); 
     jLabel17 = new javax.swing.JLabel(); 
     jButton2 = new javax.swing.JButton(); 
     jTextField1 = new javax.swing.JTextField(); 
     jTextField2 = new javax.swing.JTextField(); 
     jTextField3 = new javax.swing.JTextField(); 
     jTextField7 = new javax.swing.JTextField(); 
     jTextField8 = new javax.swing.JTextField(); 
     jTextField9 = new javax.swing.JTextField(); 
     NoOfdays = new javax.swing.JTextField(); 
     jTextField11 = new javax.swing.JTextField(); 
     jComboBox1 = new javax.swing.JComboBox<>(); 
     jComboBox2 = new javax.swing.JComboBox<>(); 
     jComboBox3 = new javax.swing.JComboBox<>(); 
     jLabel1 = new javax.swing.JLabel(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 

     jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 

     jLabel2.setText("RESERVATION OF ROOM"); 
     jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 800, 20)); 

你不關心的編碼,只是分享我如何做的事

+1

好的,什麼是你的問題/問題,你所提供的代碼是如何支持它? – MadProgrammer

+0

*「你不關心編碼..」*我關心「編碼」,因爲你關心解決方案。你有多少關心獲得答案?但爲了糾正這一點,並非像MVCE/SSCCE那樣「編碼」。 **爲了更好的幫助更快,發佈[MCVE]或[短的,獨立的,正確的示例](http://www.sscce.org/)。**請注意,這可以實現使用['RowSorter'] (https://docs.oracle.com/javase/8/docs/api/javax/swing/RowSorter.html)(它也充當**行*過濾器***)。 –

+0

我必須澄清更多。如果我必須隱藏一行,因爲我需要將該記錄存儲在數據庫中? 。我將如何將這些細節連接到數據庫? – rajesh

回答

2

要在JTable使用創建行選擇監聽器:

yourJTable.getSelectionModel().addListSelectionListener(e -> { 
    public void valueChanged(ListSelectionEvent e) { 
      ListSelectionModel lsm = (ListSelectionModel) e.getSource(); 
    } 
}); 

在這個監聽器,你可以檢查選定的房間是否預訂併發送到預訂。

要隱藏的JTable行,你應該使用過濾作爲解釋in the tutorial

+1

Happy 1K rep。 :)您需要的最後一個聲望點是通過過濾行的方法的建議而獲得的。 –

+0

(E->這使得錯誤...我如何糾正它 – rajesh

+0

更換'的e - 字符串>''新ListSelectionListener()' –

相關問題