Tôi muốn hỏi điều tương tự hơn this question nhưng sử dụng SWT: Có cách nào để tạo Nút bằng hình ảnh nút của riêng bạn không chỉ bằng hình ảnh bên trong nút không? Nếu không phải là một cách khác để tạo một nút tùy chỉnh trong java?Tạo một nút tùy chỉnh với SWT
6
A
Trả lời
10
public class ImageButton extends Canvas {
private int mouse = 0;
private boolean hit = false;
public ImageButton(Composite parent, int style) {
super(parent, style);
this.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
switch (mouse) {
case 0:
// Default state
e.gc.drawString("Normal", 5, 5);
break;
case 1:
// Mouse over
e.gc.drawString("Mouse over", 5, 5);
break;
case 2:
// Mouse down
e.gc.drawString("Hit", 5, 5);
break;
}
}
});
this.addMouseMoveListener(new MouseMoveListener() {
public void mouseMove(MouseEvent e) {
if (!hit)
return;
mouse = 2;
if (e.x < 0 || e.y < 0 || e.x > getBounds().width
|| e.y > getBounds().height) {
mouse = 0;
}
redraw();
}
});
this.addMouseTrackListener(new MouseTrackAdapter() {
public void mouseEnter(MouseEvent e) {
mouse = 1;
redraw();
}
public void mouseExit(MouseEvent e) {
mouse = 0;
redraw();
}
});
this.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
hit = true;
mouse = 2;
redraw();
}
public void mouseUp(MouseEvent e) {
hit = false;
mouse = 1;
if (e.x < 0 || e.y < 0 || e.x > getBounds().width
|| e.y > getBounds().height) {
mouse = 0;
}
redraw();
if (mouse == 1)
notifyListeners(SWT.Selection, new Event());
}
});
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.keyCode == '\r' || e.character == ' ') {
Event event = new Event();
notifyListeners(SWT.Selection, event);
}
}
});
}
}
0
Không, bạn có thể thêm một PaintListener vào một nút, nhưng nó có thể sẽ trông rất lạ.
Điều bạn cần làm là đặt kiểu cửa sổ thành "chủ sở hữu được vẽ" và hơn là thêm mã vẽ của bạn vào phương thứC# wmDrawChild của Nút. Điều này có nghĩa là bạn cần thêm các phụ thuộc vào các lớp SWT bên trong và nó sẽ chỉ làm việc cho Windows.
Các vấn đề liên quan
- 1. Tạo hai nút tùy chỉnh
- 2. tạo nút xóa tùy chỉnh cho uitableview
- 3. JavaFX - tạo nút tùy chỉnh với hình ảnh
- 4. Nút Gửi Tùy chỉnh
- 5. AngularJS ng-lưới với nút tùy chỉnh
- 6. Tạo một OnClickListener tùy chỉnh
- 7. Nút tùy chỉnh Xinha
- 8. Tạo một namedtuple với một chức năng tùy chỉnh băm
- 9. Nút tùy chỉnh nút chuyển đổi Android
- 10. Tạo Nút tùy chỉnh bằng UIBiew hoặc ghi đè UIButton?
- 11. SWT nút Dropdown kiểm soát
- 12. Di biên giới của Programatically tùy chỉnh đã tạo Nút
- 13. Nút tùy chỉnh hoặc Liên kết đến trang Visualforce với bộ điều khiển tùy chỉnh
- 14. Tìm kiếm tùy chỉnh của Google với hộp và nút tìm kiếm tùy chỉnh?
- 15. Làm tùy chỉnh tab nút
- 16. Mẫu nút tùy chỉnh trong WPF
- 17. Tạo một phương pháp tùy chỉnh với khối hoàn
- 18. WTForms tạo một widget tùy chỉnh
- 19. Biểu mẫu Nút tùy chỉnh Drupal
- 20. Tạo tùy chỉnh UITableViewCell trong một Storyboard
- 21. Tạo một tùy chỉnh Toast fullscreen
- 22. Tạo một lớp tùy chỉnh IQueryable
- 23. Hộp xác nhận JavaScript với các nút tùy chỉnh
- 24. Cách tạo động "Chia sẻ nút này" với URL tùy chỉnh có chức năng javascript?
- 25. Tạo một tùy chỉnh Ubuntu Daemon
- 26. Tạo một lớp sys.stdout tùy chỉnh?
- 27. Highcharts: Thêm nút hình ảnh tùy chỉnh
- 28. Nút có bố cục XML tùy chỉnh
- 29. MPMoviePlayerController Thêm nút Phát tùy chỉnh
- 30. Android: hình dạng nút tùy chỉnh
Bạn có thể làm hài lòng cả mã lớp? Tôi gặp khó khăn khi làm cho nó hoạt động. Cảm ơn! – Hectoret
Tôi đã chỉnh sửa lớp học. Nó biên dịch, nhưng tôi chưa thực sự thử nghiệm nó. –