[Java Soft] Phần mềm quản lý dược phẩm Cộng Đồng Java

manhlh231

Member
16/4/15
45
1
8
25
jToggleButton cũng như JCheckbox hoặc JRadioButton, bạn add tất cả các nút vào cùng một button group thì mặc nhiên chỉ có một button click lần cuối là ở trạng thái được chọn.
Cảm ơn bạn nhé. để mình xem lại :)
 

manhlh231

Member
16/4/15
45
1
8
25
Cho mình hỏi thêm 1 vấn đề nữa là ở nút "Thêm Dược phẩm mới" khi bấm vào đó thì nó bung 1 Panel lên và có thể tắt nó xuống. Mình chưa từng xem qua demo kiểu như vậy bao giờ. Bạn có thể cho mình demo hay 1 vài hướng đi cụ thể không ? Cảm ơn bạn nhiều. Hoặc bạn có thể cho mình xin từ khóa trên google để mình tự kiểm hiểu. mình tìm với từ khóa "thao tác với Panel" mà không có demo nào như vậy
 

JackV

Administrator
Staff member
Cho mình hỏi thêm 1 vấn đề nữa là ở nút "Thêm Dược phẩm mới" khi bấm vào đó thì nó bung 1 Panel lên và có thể tắt nó xuống. Mình chưa từng xem qua demo kiểu như vậy bao giờ. Bạn có thể cho mình demo hay 1 vài hướng đi cụ thể không ? Cảm ơn bạn nhiều. Hoặc bạn có thể cho mình xin từ khóa trên google để mình tự kiểm hiểu. mình tìm với từ khóa "thao tác với Panel" mà không có demo nào như vậy
Nó nằm ở vị trí last trong border layout của panel chứa nó, khi bấm thêm chỉ cần set lại cái prefer size cho nó, nếu sau khi set lại prefer size cho nó mà nó chưa hiện thị thì bạn updateUI lại cái panel
 

manhlh231

Member
16/4/15
45
1
8
25
Nó nằm ở vị trí last trong border layout của panel chứa nó, khi bấm thêm chỉ cần set lại cái prefer size cho nó, nếu sau khi set lại prefer size cho nó mà nó chưa hiện thị thì bạn updateUI lại cái panel
Mình tìm mãi mà không ra được
 

JackV

Administrator
Staff member
nó nằm trong PanelDanhSachHangLuuTru

PHP:
   private void butMinimizeActionPerformed(java.awt.event.ActionEvent evt) {                                           
        panelCenter.removeAll();
        panelButMinimize.removeAll();
        panelButAddNew.add(butAddNew);
        panelRoot.setPreferredSize(new java.awt.Dimension(454, 35));
        panelRoot.updateUI();
    }                                          

    private void butAddNewActionPerformed(java.awt.event.ActionEvent evt) {                                         
        butMinimize.setText("_");
        panelButMinimize.add(butMinimize);
        panelCenter.add(panelThemXoaSuaDuocPham);
        panelThemXoaSuaDuocPham.doSwithModeThemMoi();
        panelButAddNew.removeAll();
        panelRoot.setPreferredSize(new java.awt.Dimension(454, 300));
        panelRoot.updateUI();
    }
 

manhlh231

Member
16/4/15
45
1
8
25
nó nằm trong PanelDanhSachHangLuuTru

PHP:
   private void butMinimizeActionPerformed(java.awt.event.ActionEvent evt) {                                          
        panelCenter.removeAll();
        panelButMinimize.removeAll();
        panelButAddNew.add(butAddNew);
        panelRoot.setPreferredSize(new java.awt.Dimension(454, 35));
        panelRoot.updateUI();
    }                                         

    private void butAddNewActionPerformed(java.awt.event.ActionEvent evt) {                                        
        butMinimize.setText("_");
        panelButMinimize.add(butMinimize);
        panelCenter.add(panelThemXoaSuaDuocPham);
        panelThemXoaSuaDuocPham.doSwithModeThemMoi();
        panelButAddNew.removeAll();
        panelRoot.setPreferredSize(new java.awt.Dimension(454, 300));
        panelRoot.updateUI();
    }
Cảm ơn nhé. Tại mỗi lần mình mở file đó là nó bị lỗi ntn

 

manhlh231

Member
16/4/15
45
1
8
25
Lỗi đầu tiên là do thiếu file dữ liệu .set

nhấn shift+f11 build project một lần rồi chạy để tránh lỗi 2
Mình hơi rối do nhiều bảng quá...
Code:
private void tableLuuTruMouseClicked(java.awt.event.MouseEvent evt) {                                        
        try {
            if (tableLuuTru.getSelectedRowCount() != 0) {
                panelThemXoaSuaDuocPham.setData(DuocPhamDataManager.getDuocPhamUnit(removeZeroInID(tableLuuTru.getValueAt(tableLuuTru.getSelectedRow(), 0).toString())));
                panelThemXoaSuaDuocPham.setMode(panelThemXoaSuaDuocPham.UPDATEMODE);
                panelButMinimize.add(butMinimize);
                butMinimize.setText("_");
                panelCenter.add(panelThemXoaSuaDuocPham);
                panelButAddNew.removeAll();
                panelRoot.updateUI();
                panelRoot.setPreferredSize(new java.awt.Dimension(454, 300));
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, "Lỗi chưa xác định:\n" + ex.getMessage());
            ex.printStackTrace();
            ex.printStackTrace(ErrorLoger.getLogStream());
        }
    }

Code:
 private void butMinimizeActionPerformed(java.awt.event.ActionEvent evt) {                                           
        panelCenter.removeAll();
        panelButMinimize.removeAll();
        panelButAddNew.add(butAddNew);
        panelRoot.setPreferredSize(new java.awt.Dimension(454, 35));
        panelRoot.updateUI();
    }                                          

    private void butAddNewActionPerformed(java.awt.event.ActionEvent evt) {                                         
        butMinimize.setText("_");
        panelButMinimize.add(butMinimize);
        panelCenter.add(panelThemXoaSuaDuocPham);
        panelThemXoaSuaDuocPham.doSwithModeThemMoi();
        panelButAddNew.removeAll();
        panelRoot.setPreferredSize(new java.awt.Dimension(454, 300));
        panelRoot.updateUI();
    }
Nếu bạn có thể viết 1 demo đơn giản hơn thì cảm ơn trước nha.
 

JackV

Administrator
Staff member
Mình hơi rối do nhiều bảng quá...
...
Nếu bạn có thể viết 1 demo đơn giản hơn thì cảm ơn trước nha.
Bạn đang làm cái việc đọc hiểu code của người khác rồi sao chép cấu trúc lại thì phải.
  • Việc đọc hiểu code của người khác là để các bạn đã biết code rồi đọc hiểu
  • Sao chép cấu trúc của người khác thì thiếu tính sáng tạo
Khi bạn biết cách làm của người khác OK thì bạn nên tự làm ra cái đó theo định hướng chứ không phải là tìm code.

Bạn phải làm để có kinh nghiệm, nếu làm không chạy thì tạo topic mới post lên với đầy đủ dữ kiện để mọi người hỗ trợ theo nội dung trong Quy Tắc Hỗ Trợ
 

manhlh231

Member
16/4/15
45
1
8
25
Bạn đang làm cái việc đọc hiểu code của người khác rồi sao chép cấu trúc lại thì phải.
  • Việc đọc hiểu code của người khác là để các bạn đã biết code rồi đọc hiểu
  • Sao chép cấu trúc của người khác thì thiếu tính sáng tạo
Khi bạn biết cách làm của người khác OK thì bạn nên tự làm ra cái đó theo định hướng chứ không phải là tìm code.

Bạn phải làm để có kinh nghiệm, nếu làm không chạy thì tạo topic mới post lên với đầy đủ dữ kiện để mọi người hỗ trợ theo nội dung trong Quy Tắc Hỗ Trợ
Tại mình xem khá kỹ mà chưa hiểu nên bắt đầu từ đâu. Mình mới làm cái demo nhưng khi ấn nút để hiển thị nội dung Panel khác lên panelcenter thì bị lỗi. bạn xem code giùm.
Code:
 private void jButtonMiniActionPerformed(java.awt.event.ActionEvent evt) {                                           
       jPanelcenter.removeAll();
        jPanelMinimum.removeAll();
        jPanelHienthi.add(jButtonThem);
        jPanelRoot.setPreferredSize(new java.awt.Dimension(500, 35));
        jPanelroot2.updateUI();
    }                                          

    private void jButtonThemActionPerformed(java.awt.event.ActionEvent evt) {                                           
      jPanelMinimum.add(jButtonMini);
      Hienthi ht = new Hienthi();
        jPanelcenter.add(ht);
        jPanelHienthi.removeAll();
        jPanelroot2.setPreferredSize(new java.awt.Dimension(500, 300));
        jPanelroot2.updateUI();
    }
Hoặc bạn có thể tải luôn demo về xem, code mình viết tùm lum lắm... http://upnhanh.mobi/get/DcCq
 

JackV

Administrator
Staff member
Tại mình xem khá kỹ mà chưa hiểu nên bắt đầu từ đâu. Mình mới làm cái demo nhưng khi ấn nút để hiển thị nội dung Panel khác lên panelcenter thì bị lỗi. bạn xem code giùm.
Code:
 private void jButtonMiniActionPerformed(java.awt.event.ActionEvent evt) {                                          
       jPanelcenter.removeAll();
        jPanelMinimum.removeAll();
        jPanelHienthi.add(jButtonThem);
        jPanelRoot.setPreferredSize(new java.awt.Dimension(500, 35));
        jPanelroot2.updateUI();
    }                                         

    private void jButtonThemActionPerformed(java.awt.event.ActionEvent evt) {                                          
      jPanelMinimum.add(jButtonMini);
      Hienthi ht = new Hienthi();
        jPanelcenter.add(ht);
        jPanelHienthi.removeAll();
        jPanelroot2.setPreferredSize(new java.awt.Dimension(500, 300));
        jPanelroot2.updateUI();
    }
Hoặc bạn có thể tải luôn demo về xem, code mình viết tùm lum lắm... http://upnhanh.mobi/get/DcCq
Ok, cứ vậy nhé, làm không chạy bạn cứ đưa link project, cố gắng mô tả vấn đề của bạn thật rõ ràng thì mọi người sẽ nhiệt tình hỗ trợ bạn.

Vấn đề của bạn là bạn thay đổi kích thước preferr size của đối tượng nhưng sau khi updateUI thì nó lại không có thay đổi hiện thị đó là vì đối tượng của bạn không nằm trong các layout sử dụng preferr size nên nó không có tác dụng, bạn đang dùng free layout nên chỉ có method setSize mới có tác dụng.

Đối với free layout thì bạn có thể sắp đặt tự do các component ở bất kỳ vị trí nào và bạn phải định kích thước của nó thì nó mới hiện thị, một số layout khác thì nó có những mặc định khác.
Ví dụ dụ với boderlayout mà mình dùng trong project đã sửa cho bạn thì nếu đối tượng ở vị trí trên và dưới thì nó chiều cao do mình định và chiều rộng theo parrent, với đối tượng ở vị trí trái phải thì chiều rộng do mình định và chiều cao theo parrent, với đối tượng ở vị trí center thì chiều cao và chiều rộng sẽ là phần của lại sau khi trừ kích thước định sẵn của các phần còn lại. Xem thêm các layout tại http://congdongjava.com/forum/threads/eopwj-swing-swing-layout-căn-chỉnh-các-phần-tử-trên-giao-diện.17795/

http://upnhanh.mobi/get/CkZO3 project đã được sắp xếp lại các component và layout, code của bạn OK.
 

manhlh231

Member
16/4/15
45
1
8
25
Ok, cứ vậy nhé, làm không chạy bạn cứ đưa link project, cố gắng mô tả vấn đề của bạn thật rõ ràng thì mọi người sẽ nhiệt tình hỗ trợ bạn.

Vấn đề của bạn là bạn thay đổi kích thước preferr size của đối tượng nhưng sau khi updateUI thì nó lại không có thay đổi hiện thị đó là vì đối tượng của bạn không nằm trong các layout sử dụng preferr size nên nó không có tác dụng, bạn đang dùng free layout nên chỉ có method setSize mới có tác dụng.

Đối với free layout thì bạn có thể sắp đặt tự do các component ở bất kỳ vị trí nào và bạn phải định kích thước của nó thì nó mới hiện thị, một số layout khác thì nó có những mặc định khác.
Ví dụ dụ với boderlayout mà mình dùng trong project đã sửa cho bạn thì nếu đối tượng ở vị trí trên và dưới thì nó chiều cao do mình định và chiều rộng theo parrent, với đối tượng ở vị trí trái phải thì chiều rộng do mình định và chiều cao theo parrent, với đối tượng ở vị trí center thì chiều cao và chiều rộng sẽ là phần của lại sau khi trừ kích thước định sẵn của các phần còn lại. Xem thêm các layout tại http://congdongjava.com/forum/threads/eopwj-swing-swing-layout-căn-chỉnh-các-phần-tử-trên-giao-diện.17795/

http://upnhanh.mobi/get/CkZO3 project đã được sắp xếp lại các component và layout, code của bạn OK.
Cảm ơn bạn nha. Mình hiểu rồi :D cho mình hỏi thêm chỗ này là khi mình set Flowlayout cho panel cua nút thu nhỏ thì bị lỗi, cái nút thu nhỏ nó rộng bằng với cái panel luôn.

Tất cả các layout:
.
Hoặc bạn có thể xem lại demo giúp mình. http://upnhanh.mobi/get/RqNZnN mình sửa mà chưa có được. Ngoài ra mình có gắn sự kiện mouse click cho table ở trên để đổ dữ liệu lên, tương ứng với mỗi row của table sẽ hiển thị thông tin tương ứng ở panelcenter. Bạn xem code giúp mình
Code:
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                    
        jPanelcenter.removeAll();
        jPanelMinimum.removeAll();
        jPanelMinimum.add(jButtonMini);  
        Hienthi ht = new Hienthi();
        jPanelcenter.add(ht);
        jPanelHienthi.removeAll();
        jPanelroot2.setPreferredSize(new java.awt.Dimension(500, 300));
        jPanelroot2.updateUI();
    }
 

Dai su huynh

Member
14/5/15
97
14
8
33
JackV cho mình hỏi chút, trong ct này thì các cửa sổ khác như nhập hàng là dùng theo cách nào nhỉ? ( internal Frame phải ko vậy? )
 

JackV

Administrator
Staff member
JackV cho mình hỏi chút, trong ct này thì các cửa sổ khác như nhập hàng là dùng theo cách nào nhỉ? ( internal Frame phải ko vậy? )
Tất cả các phần nhập liệu đều thực hiện load panel chứa các control cho việc nhập liệu http://congdongjava.com/forum/threads/load-panel-form-vào-thay-cho-việc-hiện-thị-dialog-để-nhập-liệu.12848/, không xuất hiện cửa sổ mới. Bạn chưa chạy thử à?
 
Sửa lần cuối:
  • Like
Reactions: Dai su huynh

manhlh231

Member
16/4/15
45
1
8
25
Mình có bị lỗi chỗ này,

Khi mình chọn 1 tài khoản và chọn tiếp 1 tài khoản khác thì bị lỗi như trong hình...
Đây là code mouse click của mình: Bạn xem giúp mình xem bị lỗi gì
Code:
private void tableListAccountMouseClicked(java.awt.event.MouseEvent evt) {                                             
              
              PanelThemXoaTaikhoan acc = new PanelThemXoaTaikhoan();
        int index = this.tableListAccount.getSelectedRow();       
        String username = this.tableListAccount.getValueAt(index, 0).toString();
        Account ac = acd.find(username);
        acc.jTextFieldUsername.setText(ac.getUsername());
        acc.jTextFieldPassword.setText(ac.getPassword());
        acc.jTextFieldFullName.setText(ac.getFullName());
        acc.jTextFieldAddress.setText(ac.getAddress());
        acc.jComboBoxLicense.setSelectedItem(ac.getLicense());
        acc.jComboBoxGender.setSelectedItem(ac.getSex());
        acc.setMode(acc.UPDATEMODE);
                panelButMinimize.add(butMinimize);
                panelCenter.add(acc);             
                panelButAddNew.removeAll();
                panelRoot.updateUI();
                panelRoot.setPreferredSize(new java.awt.Dimension(454, 450));
        
      
    }
 

manhlh231

Member
16/4/15
45
1
8
25
à, mình sửa được rồi nhé, trong sự kiện mouse click mình thiếu
Code:
  panelCenter.removeAll();