Bản năng đầu tiên của tôi là - bạn không thể trừ khi bạn KHÔNG sử dụng setUndecorated (true) ... Bạn có thể tự đặt một số trang trí ở đó, nhưng, tốt, UGH!
Vì vậy, nếu bạn muốn các trang trí gốc và bạn muốn nó bất động mà không có sự nhấp nháy kinh khủng từ việc sử dụng một người nghe thành phần, tôi nghĩ rằng bạn không thể. Bạn có thể tạo một đường viền theo cách thủ công mà LOOKS thích đường viền mặc định ... đây là một ví dụ về cách thực hiện, mặc dù tôi đã cố ý làm cho đường viền trông giống như điều xấu nhất mà bạn đã thấy cả ngày. Bạn sẽ cần phải tìm sự kết hợp đúng của các cuộc gọi BorderFactory để đạt được những gì bạn muốn làm.
public static void main(String[] args) throws InterruptedException {
JDialog frame = new JDialog((Frame) null, "MC Immovable");
frame.setUndecorated(true);
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createEtchedBorder(Color.GREEN, Color.RED));
panel.add(new JLabel("You can't move this"));
frame.setContentPane(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
Nguồn
2011-09-05 16:15:27
Bạn có thể giải thích lý do bạn muốn thực hiện việc này không? Nó có thể đưa ra một ý tưởng cho một cách tiếp cận hoạt động. –