01/10/2018, 00:35

Kết nối Frame trong java swing

Mọi người cho em hỏi cách kết nối frame như trong hình với ạk. Khi bấm nút “thêm dược phẩm” thì hiện lên một bảng mới trên frame cũ ý ak. Em cảm ơn!


Hà Bút viết 02:47 ngày 01/10/2018

Ý bạn là JDialog …

Mon Nguyễn viết 02:46 ngày 01/10/2018

Sử dụng JDialog ak bạn

Mon Nguyễn viết 02:37 ngày 01/10/2018

cái bảng sau khi mình ấn “thêm dược phẩm mới” nó ở trên cái frame cũ luôn ý bạn. Chứ nó không phải là tạo ra một cái Frame mới

Quân viết 02:48 ngày 01/10/2018

tạo 1 component chứa cái phần dưới, khi bấm thêm thì add component đó dzô, add thêm các constrait phù hợp để nó chia đôi được màn hình -> update frame -> done.
ngoài ra có thể thêm ngay từ đầu, nhưng setvisibility là hidden chẳng hạn, lúc nào cần thì hiện nó ra

Tynk Huynk viết 02:50 ngày 01/10/2018

Cái này còn tùy vào model của bảng bạn dùng thuộc custom hay default. Nhưng nói chung, sau khi click vào nút thêm mặt hàng thì bạn add đối tượng mặt hàng mới vào cái list, sau đó dùng phương thức UpdateUI() của đối tượng bảng để cập nhật thông tin hiển thị trên nó. vd: tênbảng.updateUI();

Đỗ Trung Quân viết 02:38 ngày 01/10/2018

Solution ở trên mọi người đều nói hết rồi.

Mặc dù hầu hết các trường hiện tại vẫn dạy Java Swing. Nhưng nếu làm những bài tập mở rộng như này bạn nên tìm hiểu và làm bằng javaFX. Hoặc bỏ qua luôn desktop chuyển qua web.

Mon Nguyễn viết 02:51 ngày 01/10/2018

Anh ơi anh có thể demo cho e một ví dụ đơn giản được không ạ. Em làm rồi nhưng không được

Mon Nguyễn viết 02:45 ngày 01/10/2018

em đang làm cái project, làm cũng được khá nhiều rồi. Giờ không chuyển được anh ak.

Hidan viết 02:49 ngày 01/10/2018

là sao a, e đang học java swing trên trường nghe vậy hơi nản thế javaFx cũng giống swing à nó hơn swing ở điểm nào vậy ?

Quân viết 02:49 ngày 01/10/2018

nói demo thì mình hơi ngại viết cho bạn, nhưng chỉ nói ý tưởng cho bạn rồi tự triển khai thôi. Kiến thức cần phải nắm vững để thực hiện bao gồm:

  • cách layout các component trên panel
  • cách show/hide/add/remove 1 component bất kì trong panel
    bạn kết hợp show/hide hoặc add/remove component con cho phù hợp dựa theo các event cụ thể là ra được đúng ý mình thôi.
Mon Nguyễn viết 02:45 ngày 01/10/2018

public DemoSwing() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
createFrame();
setResizable(false);
setSize(800, 700);
setVisible(true);
}

public void createFrame() {
    
    JLabel lb1 = new JLabel("UserName");
    JLabel lb2 = new JLabel("Pass");
    JTextField tf1 = new JTextField(20);
    JTextField tf2 = new JTextField(20);
    
    bt1.addActionListener(this);
    bt2.addActionListener(this);
         
    GroupLayout layout = new GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setAutoCreateContainerGaps(true);
    layout.setAutoCreateGaps(true);
    
    layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            
            .addGroup(layout.createSequentialGroup()                        
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(lb1)
            .addComponent(lb2)
                    .addComponent(bt1)
            )
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(tf1)
            .addComponent(tf2)    
                    .addComponent(bt2)
            )
            )
            
            .addComponent(pn)
            
    );
    
    layout.setVerticalGroup(
    layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(lb1)
                    .addComponent(tf1)
            
            )
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(lb2)
                    .addComponent(tf2)
            )
            
             .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(bt1)
                    .addComponent(bt2)
            )
    .addComponent(pn)
    
    );
    
}

public JPanel KhoiTao() {
    pn2.add(new JButton("sản phẩm"));
    return pn2;
}

public static void main(String[] args) {
    new DemoSwing();           
}

public void actionPerformed(ActionEvent e) {
    if (e.getSource() == bt1) {
        pn.add(KhoiTao());             
        show();          
    }
    
    if (e.getSource() == bt2) {
        System.out.println("xóa");
        pn.removeAll();
       // hide();
        show();
    }
}

// Anh xem hộ em sai chỗ nào với ajh, em code mà lúc mình remoAll cái panel đi nó không mất anh ak. Mình thêm thì nó lại nối vào cái panel

Bài liên quan
0