Trục trặc với add ScrollPane cho Panel trong trường hợp Panel được load từ Panel form khác?!?

dt2it153

Member
14/7/11
92
2
8
nhà tui ^^
Hi mọi người, mình đang gặp trục trặc với vấn đề được nêu như tiêu đề ở trên. Cụ thể là:
- Mình có 1 frame chứa 1 panel (P1), panel này để trống, trong frame cũng có thêm 1 nút để gọi đến panel form (P2) khác. (dùng Netbeans để thiết kế).
- Khi nút này được nhấn thì panel form P2 đó dc load vào panel P1 để trống có sẵn trog frame lúc nãy, vấn đề là size của panel form P2 thì to hơn size của panel P1 trong frame.
Nên mình nghĩ là add thêm cái scrollpane vô thì giải quyết dc.
Search Google tìm hiểu được cách add Scroll Pane theo truyền thống, tức là trong frame có panel, và add scrollpane cho panel đó, rồi add scrollpane vào frame thì hiển thị dc cái ScrollPane đó và có thể di chuyển để xem nội dung trong panel. Như thế này: http://www.coderanch.com/t/547945/java/java/Adding-JScrollPane-JPanel
Mình làm tương tự thì lúc nhấn nút, nó ko hiển thị panel form dc gọi nữa.
Với trường hợp của mình thì add truyền thống ko dc roi.
Mong mọi người chỉ dẫn?
 

dt2it153

Member
14/7/11
92
2
8
nhà tui ^^
Mình paste code vào đây cho dễ theo dõi nha:
Hàm main trong trang Home (là frame chứa panel trống):

PHP:
public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
        * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
        */
        try {
        UIManager.setLookAndFeel(ch.randelshofer.quaqua.QuaquaManager.getLookAndFeel());
        } catch (Exception ex) { ex.printStackTrace(); }
        /* Create and display the form */
        finally {
            LoginDialog lg = new LoginDialog(null, true);
            if (LoginDialog.getStatus()) {
                System.out.println(LoginDialog.getStatus());
                Home home = new Home();
                lblUserName.setText(Permission.UserName);
                home.setLocationRelativeTo(null);
                home.setVisible(true);
//mình định new mới Scroll Pane chỗ này, [B]jpContent[/B] là panel trống trong frame Home
              // JScrollPane jscrpane = new JScrollPane(jpContent);          //jscrpane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                jscrpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
//                home.add(jscrpane);

            }
        }
    }
- Hàm gọi đến panel form khác:
PHP:
public static void callJPanelContent(JPanel jpanel)
{
        jpContent.removeAll();
        jpanel.setVisible(false);
        jpContent.add(jpanel, new AbsoluteConstraints(0,0,jpContent.getWidth(),jpContent.getHeight()));
        jpanel.setVisible(true);
    }
- Nút xử lý để gọi đến panel form khác:
PHP:
private void btnDepartmentManActionPerformed(java.awt.event.ActionEvent evt) {
        if(STATUS != DEP) {
            STATUS = DEP;
            callJPanelContent(man_dept); //gọi hàm chỉ đến panel form
        }
    }
Vậy giờ mình làm như thế nào?
 

dt2it153

Member
14/7/11
92
2
8
nhà tui ^^
Hix, mình bó tay rồi, mọi người chỉ giùm với. Chuẩn bị hôm nay nộp, còn phải chụp báo cáo nữa, mà giờ bị như này không chụp được :((
 

LTV

Active Member
11/12/12
318
78
28
Bắc Giang
itube-v3.appspot.com
Về logic mình nghĩ theo cách của mình ổn mà...bạn cứ kéo như thế...xong actionPerform cho cái nút ấy setVisible(true) là ok chứ nhỉ...bạn để bacground để phân biệt xem nó hoạt động k