Làm cách nào để tạo cửa sổ (chẳng hạn như java.awt.Frame
, javax.swing.JFrame
, java.awt.Dialog
, javax.swing.JDialog
, v.v.) đặt cạnh của màn hình, như thanh công cụ, thanh tác vụ, Trillian hoặc Microsoft OneNote có thể? Tôi chỉ muốn sử dụng các thư viện JDK chuẩn nếu có thể.Đặt cạnh của màn hình bằng Java
Trả lời
Hành vi này là rất cụ thể cho các hệ điều hành Windows, và như vậy không có cách nào để làm điều này trong tiêu chuẩn JDK hoặc với AWT/Swing, vì chúng cần phải làm việc nhất quán trên một số hệ điều hành khác nhau.
Tương đương gần nhất với những gì bạn muốn là có ranh giới của màn hình hiện tại và di chuyển/thay đổi kích thước cửa sổ của bạn để vừa với một bên, mặc dù điều này sẽ có tác dụng trên màn hình hoặc các cửa sổ khác.
Điều gần nhất bạn có thể sẽ nhận được những gì bạn muốn là sử dụng JNIWrapper and WinPack để thay đổi hành vi cửa sổ gốc. Tài liệu của họ không hiển thị bất cứ điều gì về thanh công cụ máy tính để bàn, mặc dù. Bạn có lẽ sẽ phải sử dụng JNI của họ để truy cập trực tiếp vào các hàm COM cụ thể và sau đó tìm hiểu cách thực hiện nó trong C++, nhưng nếu bạn không biết C++, điều đó có lẽ nằm ngoài phạm vi dự án của bạn.
Phụ Lục:
Nếu bạn muốn tận dụng các tính năng bản địa cho hệ điều hành và quản lý máy tính để bàn cụ thể, bạn sẽ cần phải kết nối với một thư viện mẹ đẻ C++ để móc vào Gnome, KDE, Mac OS vv Tìm kiếm 'Java JNI' và hệ thống cửa sổ bạn muốn tích hợp với để tìm các gói bạn có thể sử dụng. Ví dụ, đối với Gnome, xem here.
Nếu bạn muốn hỗ trợ nhiều hệ điều hành, hãy đảm bảo bạn tạo một giao diện chung để bạn có thể thực hiện các kết nối với JNIs tương ứng tùy thuộc vào mạng nào đang hoạt động và cho phép dự phòng nếu không có sẵn.
PS. Nếu bạn muốn thông báo bật lên trong ứng dụng của mình, Mac OS và các phiên bản Linux khác nhau hỗ trợ Growl để có thể giúp bạn tiết kiệm thời gian.
Tôi sợ rằng u.u Tại sao các HĐH khác không có khả năng của Windows? : c – Supuhstar
Vâng, để bắt đầu, nếu tất cả các hệ điều hành có tất cả các tính năng tương tự, sẽ không có sự lựa chọn nào cho người tiêu dùng.Ngoài ra, chúng ta cần nhớ rằng Java không chỉ được thiết kế cho PC, mà còn chạy trên điện thoại di động, hệ thống bảo mật và các thiết bị nhúng khác có thể có khả năng hiển thị rất hạn chế hoặc không có gì cả. Sun/Oracle không thể viết mã gốc để hỗ trợ tất cả các cấu hình phần cứng và phần mềm có thể. Đó là nơi bạn phải tìm một JNI làm những gì bạn muốn, hoặc viết một bản thân. Tôi đoán bạn sẽ phải đi cho các giải pháp đơn giản - di chuyển và thay đổi kích thước cửa sổ ứng dụng của bạn. – BoffinbraiN
Chờ ... Nhưng OS X có thể dự trữ đầu cho thanh menu và các mặt khác cho dock, Gnome và Unity có thể làm tương tự ... tại sao hệ điều hành này cụ thể? – Supuhstar
Bạn có thể sử dụng Toolkit.getDefaultToolkit(). GetScreenInsets() Từ nguồn JMenu
Toolkit toolkit = Toolkit.getDefaultToolkit();
GraphicsConfiguration gc = getGraphicsConfiguration();
Rectangle screenBounds = new Rectangle(toolkit.getScreenSize());
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gd = ge.getScreenDevices();
for(int i = 0; i < gd.length; i++) {
if(gd[i].getType() == GraphicsDevice.TYPE_RASTER_SCREEN) {
GraphicsConfiguration dgc =
gd[i].getDefaultConfiguration();
if(dgc.getBounds().contains(position)) {
gc = dgc;
break;
}
}
}
if (gc != null) {
screenBounds = gc.getBounds();
// take screen insets (e.g. taskbar) into account
Insets screenInsets = toolkit.getScreenInsets(gc);
screenBounds.width -=
Math.abs(screenInsets.left + screenInsets.right);
screenBounds.height -=
Math.abs(screenInsets.top + screenInsets.bottom);
position.x -= Math.abs(screenInsets.left);
position.y -= Math.abs(screenInsets.top);
}
- 1. Chú giải công cụ trên màn hình thứ hai được hiển thị ở cạnh màn hình
- 2. Màn hình Splash Java 6
- 3. Java - Làm cách nào để ngăn BorderLayout EAST khỏi bị giật bên cạnh màn hình?
- 4. Android Java: Tắt màn hình
- 5. Cách đặt một hình ảnh cạnh nhau
- 6. Cạo màn hình bằng Python
- 7. Đặt Màn hình chính Hình nền
- 8. Lớp màn hình trong Java
- 9. Chụp màn hình màn hình hiện tại của thiết bị
- 10. Cách tìm kích thước màn hình của hai màn hình bằng cách sử dụng wx.displaySize()
- 11. Cách lấy ảnh chụp màn hình của màn hình nền từ bộ đệm sau bằng DirectX
- 12. iOS Ảnh chụp màn hình một phần của màn hình
- 13. autogenerate HTTP màn hình cạo mã Java
- 14. Chụp màn hình của màn hình Hiện tại
- 15. Đặt một cửa sổ trên màn hình
- 16. Đặt tiêu đề màn hình từ shellscript
- 17. Đặt trước một phần màn hình máy tính để bàn
- 18. Lấy kích thước màn hình trong Java
- 19. Đặt UIView ở giữa màn hình
- 20. Java Windows 8 toàn màn hình?
- 21. Đặt toàn màn hình ra trênTạo
- 22. Java Swing: Màn hình tải phương thức?
- 23. Kích thước màn hình của thiết kế Android bằng pixel?
- 24. Chụp ảnh màn hình của video được nhúng bằng C#
- 25. Đặt hình nền theo độ phân giải màn hình
- 26. Java: Nhận độ phân giải của một/tất cả các màn hình có sẵn (thay vì toàn bộ màn hình)?
- 27. java & fullscreen trên nhiều màn hình
- 28. Cách đặt hình ảnh màn hình khóa android
- 29. DialogFragment toàn màn hình hiển thị phần đệm trên các cạnh
- 30. Mức trình biên dịch Java không khớp với phiên bản của khía cạnh dự án Java đã cài đặt
'JSplitPane' có hoạt động không? http://download.oracle.com/javase/tutorial/uiswing/components/splitpane.html – trashgod
Bạn có muốn tạo cửa sổ hoạt động như thanh công cụ trên màn hình nền không? – AlexR
@trashgod: 'javax.swing.JSplitPane' sẽ không thực hiện; nó là một thành phần chỉ hoạt động trong một cửa sổ – Supuhstar