Cần giúp đỡ tương tác với Calendar

Discussion in 'Xây dựng ứng dụng desktop standalone' started by Ngô Thành Trung, 4/7/17.

  1. Ngô Thành Trung

    Ngô Thành Trung New Member

    Hiện mình đang có project tạo bảng calendar. Mình đã tạo ra được nhưng không biết làm thế nào để chọn từng ngày và lấy giá trị của ngày đó ra.
    Mong các bạn giúp đỡ.
    Mình viết trên IDE NetBean
    File đính kèm là project mình đã export :)

    Attached Files:

  2. nhokkokhoc

    nhokkokhoc New Member

    Bạn mô tả rõ hơn đi, xem sao. chưa hiểu ý đồ của bạn lắm.
  3. Ngô Thành Trung

    Ngô Thành Trung New Member

    Là như thế này, mình muốn khi click vào calendar thì có thể set màu cho những ngày đã chọn.
    Thêm vào đó là lấy giá trị ngày tháng của những ngày đã chọn xuất ra textField :)
  4. JackV

    JackV Administrator Staff Member

    Bài này làm hay hơn các bạn mới học khác ở chỗ là tạo động các phần tử hiện thị, vấn đề vướng mắc nằm ở chỗ là chưa add các listener để lắng nghe sự kiện của các text field được tạo động.
    Khi bạn tạo ra các đối tượng, để người dùng tương tác và chương trình bắt được sự kiện thì bạn phải add các listener tương ứng với mỗi hoạt động, ví dụ như là sự kiện chuột addMouseListener, sự kiện double click addActionListener, sự kiện focus addFocusListener, vậy đó.
    Ví dụ như để bắt sự kiện người dùng click vào textfield rồi enter thì
    PHP:
                textFields[i].addActionListener(new java.awt.event.ActionListener() {

                    public 
    void actionPerformed(java.awt.event.ActionEvent evt) {
                        
    textfieldActionPerformed(evt);
                    }
                });
    tất nhiên, phương thức textfieldDoubleClicked bạn phải khai báo để chương trình triệu gọi, vậy vấn đề còn lại là gì? Vấn đề còn lại đơn giản là lấy ra text để hiện thị thôi
    PHP:
    ((JTextField)evt.getSource()).getText()

    Vì đây là ví dụ để bạn tự học hỏi nên JackV chỉ sửa cho bạn ở mức độ là bạn phải click vào ô đó rồi nhấn enter thì mới hiện thị text
    PHP:
        private void PanelShow() {
            
    gridLayout = new GridLayout(7700);
            
    panel = new JPanel(gridLayout);
            
    Panel1.add(panel);


            
    String[] dayNames = {"Sat""Sun""Mon""Tue""Web""Thu""Fri"};
            
    JLabel[] labels = new JLabel[7];
            for (
    int i 0labels.lengthi++) {
                
    labels[i] = new JLabel(dayNames[i]);
                
    labels[i].setHorizontalAlignment(JLabel.CENTER);
                
    panel.add(labels[i]);
            }

            for (
    int i 0textFields.lengthi++) {
                
    textFields[i] = new JTextField();
                
    textFields[i].setEditable(false);
                
    textFields[i].setHorizontalAlignment(JTextField.CENTER);
                
    textFields[i].addActionListener(new java.awt.event.ActionListener() {

                    public 
    void actionPerformed(java.awt.event.ActionEvent evt) {
                        
    textfieldActionPerformed(evt);
                    }
                });
                
    panel.add(textFields[i]);
            }
        }

        private 
    void textfieldActionPerformed(java.awt.event.ActionEvent evt) {
            
    String text = ((JTextFieldevt.getSource()).getText();
            
    txt_textdate.setText(text.isEmpty() ? "" "Cell value is " text);
        }
    Bạn làm focus event thì hợp lý hơn.

Chia sẻ trang này