2017-05-30 47 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()' –

相关问题