2012-08-28 29 views
7

Tôi đang cố thay đổi đường viền của một JMenuBar bằng một đường viền khác. Như thế (ví dụ):Thay đổi biên giới JMenuBar

Từ Image 1 http://img11.hostingpics.net/pics/696780Sanstitre.png Để Image 2 http://img11.hostingpics.net/pics/900299Sanstitre2.png

Nhưng tôi không thể tìm thấy một cách để làm điều đó. Tôi có thể thay đổi bất cứ điều gì tôi muốn nhưng điều đó.

[sửa] Tôi đã cố gắng:

UIManager.put("Menu.border", BorderFactory.createLineBorder(Color.black, 1)); 
UIManager.put("MenuBar.border", BorderFactory.createLineBorder(Color.black, 1)); 
UIManager.put("MenuItem.border", BorderFactory.createLineBorder(Color.black, 1)); 

và nó không làm việc :(...

[/ sửa]

Trả lời

11

Cuối cùng tôi đã tìm thấy những gì bạn đang tìm kiếm :) Tài sản phù hợp cho UIManager là PopupMenu.border. Để thay đổi biên giới của cả popup menu để có độ dày 4 pixel và một màu đỏ (chỉ là một ví dụ hài hước), bạn cần những dòng sau:

UIManager.put("PopupMenu.border", BorderFactory.createLineBorder(Color.red, 4)); 

Dưới đây là một ví dụ nhỏ:

import java.awt.Color; 
import javax.swing.*; 
import javax.swing.border.*; 

public class CustomPopupMenuBorder 
{ 
    public static void main(String[] args) 
    { 
     UIManager.put("PopupMenu.border", BorderFactory.createLineBorder(Color.black, 1));  
     JDialog myJDialog = new JDialog(); 
     myJDialog.setSize(450,300); 
     JMenuBar bar = new JMenuBar(); 
     JMenu menu = new JMenu("It's a me"); 
     JMenuItem item = new JMenuItem("JMenuItem 1"); 
     JMenuItem item2 = new JMenuItem("JMenuItem 2"); 
     menu.add(item); 
     JSeparator sep = new JSeparator();  
     menu.add(sep); 
     menu.add(item2); 
     bar.add(menu); 
     myJDialog.setJMenuBar(bar); 
     myJDialog.setVisible(true); 
    } 
} 

Sự trợ giúp tốt nhất mà tôi có được trong chuyến đi của mình là ứng dụng java UIManager Defaults

+0

Cảm ơn rất nhiều :) – user1534422

2

Tôi sẽ bắt đầu bằng cách nhìn vào javax.swing.border.Border class Mỗi lớp Swing kéo dài javax.swing.JComponent có một số setBorder() method.

Tôi đặc biệt khuyên bạn tự làm quen với Java API documentation. Đây là một công cụ vô giá khi bạn lập trình bằng Java.

+0

Tôi đã kiểm tra tài liệu java một cách tận tâm, nhưng cảm ơn lời khuyên;) Tôi nghĩ tôi sẽ xóa đường viền của mọi thành phần của Swing cho đến khi biên giới này biến mất. – user1534422

Các vấn đề liên quan