Câu hỏi của tôi tóm tắt điều này: đó là cấu trúc tiêu chuẩn trong lập trình Swing để cung cấp cho người nghe quyền kiểm soát các thành phần mới (ví dụ: JPanel mới) để hiển thị và nhập liệu, và để cho người nghe thành phần mới kiểm soát các thành phần mới để hiển thị và nhập liệu, và vân vân đến vô cùng? Hay Java cần phải hoàn nguyên về một loại lớp thống nhất nào đó liên kết tất cả các thành phần Swing với nhau theo một thứ tự thủ tục? Hiện tại, trong ứng dụng của tôi chỉ sử dụng một JFrame, trong trình lắng nghe của tôi, đối tượng JFrame ban đầu của tôi đang được chuyển thành tham số cho tất cả các JPanels của tôi để người nghe có thể gọi removeeall() để xóa khung cho JPanel mới . Ví dụ: mã ngắn như sauCấu trúc lập trình Java Swing: người nghe có phải là nguồn gốc của hầu hết các thành phần Swing không?
public class MainFrame {
JFrame jfrm;
public MainFrame() {
jfrm = new JFrame("Main Frame");
JPanel mainPanel = new MainPanel(jfrm);
}
}
public class MainPanel extends JPanel {
public MainPanel(final JFrame mainFrame) {
JButton example = new JButton("Example");
example.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent le) {
mainFrame.removeall();
JPanel 2ndPanel = new 2ndPanel(mainFrame);
mainFrame.add(2ndPanel);
mainFrame.validate();
}
});
}
}
Đây có phải là cấu trúc đúng - nơi mà người nghe tạo bảng mới chứ không phải một số lớp thống nhất? Nhưng nếu đó là trường hợp, làm thế nào để trình biên dịch Java bao giờ nhận được để mainFrame.validate() nếu có một tầng vô cùng của người nghe? Tôi là một lập trình viên thủ tục của trường cũ đang cố gắng lập trình một ứng dụng Swing trong Java, và tôi nghĩ rằng tôi có thể không nắm bắt được các khái niệm cơ bản về lập trình Swing. Rất mong nhận được bất kỳ câu trả lời hữu ích nào và cảm ơn trước!
Mục đích của JButton của bạn là gì? Nếu nó thực sự loại bỏ tất cả từ JFrame, và đặt một số JPanel mới ở đó? – amorfis
@amorfis: Cảm ơn nhận xét. Về bản chất, mục đích của JButton là gửi một tín hiệu mà người dùng đã chọn các tùy chọn khác nhau trong một JPanel và muốn tiếp tục tới màn hình tiếp theo. Có lẽ nó nên được JButton ("Next") để cung cấp cho bạn một số ý tưởng. – Arvanem