Tôi muốn một JPanel có kích thước và vị trí được xác định. Bên trong JPanel, tôi đã xác định số phần tử (nút) nhất định được chèn theo chiều ngang. Bởi vì JPanel của tôi có chiều rộng xác định, nếu tôi thêm nhiều nút, tôi không thể thấy điều đó. Trong trường hợp này, tôi cần một thanh cuộn cho JPanel này. Nhưng JPanel này phải là một SIZE CERTAIN IN A POSER CERTAIN bên trong một JFrame. Thanh cuộn của JPanel đã được đặt dưới nó theo chiều ngang. Ai đó có thể giúp tôi? Tôi đã thử nó mà không thành công!Cuộn một JPanel
Trả lời
Sử dụng JScrollPane và ép tùy chọn của nóSize thành kích thước nhất định của bạn (hoặc đặt hộp chứa scrollPane LayoutManager thành null và gọi setBounds() trên thanh cuộn). Đồng thời đặt chính sách thanh cuộn. Dưới đây là một mẫu nhỏ rằng:
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class Test {
public static void main(String... args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
for (int i = 0; i < 10; i++) {
panel.add(new JButton("Hello-" + i));
}
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
scrollPane.setBounds(50, 30, 300, 50);
JPanel contentPane = new JPanel(null);
contentPane.setPreferredSize(new Dimension(500, 400));
contentPane.add(scrollPane);
frame.setContentPane(contentPane);
frame.pack();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
}
Emm, vấn đề là tôi cần phải xác định vị trí JPanel ở một vị trí cụ thể của JFrame. Ngoài ra, nó phải có một kích thước nhất định. – Chu
@BrallanAguilar hoặc là bạn sử dụng một LayoutManager để định vị và kích thước các thành phần của bạn, hoặc đặt LayoutManager thành null và gọi setBounds() để định vị và kích thước thành phần của bạn. Trong trường hợp này, bạn phải làm điều đó trên JScrollPane –
Bạn có thể giúp tôi với một ví dụ không? – Chu
Thêm tất cả các nút vào bảng điều khiển của bạn. Sau đó, thêm bảng này vào scrollpane.
panel.add(button1);
panel.add(button2);
panel.add(button3);
.
.
.
panel.add(buttonn);
Khi bạn thêm các nút vào bảng điều khiển, hãy thêm bảng vào ô cuộn.
JScrollPane panelPane = new JScrollPane(panel);
Sau đó thêm bảng này vào khung của bạn.
Dưới đây là một số giải pháp khả thi:
hoặc
- để di chuyển đến quyết định
Point
hoặcRectangle
có tồn tại phương thứcscrollRectToVisible
ví dụ:myPanel.scrollRectToVisible(myButton.getBounds());
- 1. Java JPanel bên trong JScrollPane?
- 2. Transparent JPanel
- 3. JPanel bên trong một số khác
- 4. Vẽ hình chữ nhật trên một JPanel
- 5. JFileChooser được nhúng trong một JPanel
- 6. Định tâm một nhãn JLabel trên JPanel
- 7. Thay đổi kích cỡ JScrollPane chứa JPanel khi thanh cuộn xuất hiện
- 8. thêm JMenuBar vào JPanel?
- 9. JPanel Drop Shadow
- 10. Nhúng VLCJ vào JPanel
- 11. Thêm ButtonGroup vào JPanel
- 12. Java - Nhận một hình ảnh của một JPanel
- 13. JPanel repaint issue
- 14. Thêm JFreeChart vào JPanel
- 15. addMouseListener cho JPanel
- 16. JPanel với nền ảnh
- 17. Khởi tạo JDialog từ JPanel
- 18. Lấy tiêu điểm trên JPanel
- 19. Xóa JFrame & JPanel của tôi trong một trò chơi mới
- 20. JFrame xóa JPanels và thêm một JPanel mới
- 21. Làm cách nào để in một nội dung của JPanel?
- 22. Java/Swing: Nhận Window/JFrame từ bên trong một JPanel
- 23. cách kích hoạt một hành động trong JPanel mẹ khi một thành phần trong một JPanel con được cập nhật (Java Swing)
- 24. WPF Cuộn một Uniformgrid
- 25. Sự kiện di chuyển chuột trong JPanel
- 26. Thêm người gửi hành động vào jpanel
- 27. NetBeans: cách thêm ScrollBar vào JPanel
- 28. Phóng to JPanel trong Java Swing
- 29. Swing JPanel sẽ không sơn lại
- 30. Keylistener không hoạt động với JPanel
AFAIK, điểm mấu chốt là kể từ khi bạn 'JPanel' đã một' Defined Width/Height/Size', do đó khi bạn thêm bất cứ điều gì với nó, vượt ra khỏi kích thước của nó, bạn không thể nhìn thấy điều đó, ngay cả với ' JScrollPane' được thêm vào nó, vì ngay cả 'JScrollPane' không thể vượt quá kích thước của' JPanel', vì vậy các thành phần đó luôn bị ẩn: (Vì nếu bạn không định nghĩa kích thước của nó, các thành phần được thêm vào đầu tiên của 'JPanel' và sau đó là 'preferredSize()' được xác định ngầm bởi 'doLayout()' loại thingies, do đó 'JScrollPane' của bạn hoạt động trong tình huống đó, nhưng không phải ở đây. –
Cũng xem xét [' JToolBar'] (http://docs.oracle) .com/javase/tutorial/uiswing/components/toolbar.html) hoặc [layout phù hợp] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html). Không có [sscce] (http://sscce.org/) làm rõ ý nghĩa của _xác định size_ và _certain position_, câu hỏi này không thể được trả lời dưới dạng hiện tại. – trashgod