2012-05-06 2 views

ответ

14

Предполагая, что вы хотите, чтобы изображение на меню, почему не что-то вроде этого?

BufferedImage image = ImageIO.read(url); 

yourJMenu.setHorizontalTextPosition(SwingConstants.CENTER); 
yourJMenu.setVerticalTextPosition(SwingConstants.BOTTOM); 

yourJMenu.setIcon(new ImageIcon(image)); 

EDIT: Кажется, что вы просите, чтобы начать с нуля.

Перед тем, как прочитать этот ответ, обращайтесь к: How to Use Menus.


EDIT 2: Вот SSCCE,

import java.awt.image.BufferedImage; 
import java.net.URL; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.SwingConstants; 

public class MenuTest { 

    public static void main(String[] argv) throws Exception { 
     // Create the menu bar 
     JMenuBar menuBar = new JMenuBar(); 

     String imageURL = "http://blogs.discovermagazine.com/" + 
      "drone360/wp-content/themes/discoverblog/images/" + 
      "gear_icon.png"; 

     // Create a menu 
     JMenu menu = new JMenu("Menu"); 
     BufferedImage image = ImageIO.read(new URL(imageURL)); 
     menu.setHorizontalTextPosition(SwingConstants.CENTER); 
     menu.setVerticalTextPosition(SwingConstants.BOTTOM); 
     menu.setIcon(new ImageIcon(image)); 
     menuBar.add(menu); 

     // Create a menu item 
     JMenuItem item = new JMenuItem("Test Item"); 

     menu.add(item); 

     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setJMenuBar(menuBar); 
     frame.setSize(500, 550); 
     frame.setVisible(true); 
    } 
} 

Ресурс любезно: http://pscode.org/media/

+0

Привет Санджай, что мне нужно какое-то падение вниз кнопки, но с точный внешний вид, как на скриншоте (текст под иконкой). –

+0

@ user1377575 для текста под иконкой, см. Редактирование в ответ. – COD3BOY

+0

Изображения в основном «Ресурсы приложений», к ним следует обращаться путем «URL», а не «Файл», поэтому IMHO, написание «ImageIO.read (url);' будет много подхода WISER :-) –

0
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.JMenu; 
import javax.swing.JMenuItem; 
import javax.swing.JCheckBoxMenuItem; 
import javax.swing.JRadioButtonMenuItem; 
import javax.swing.ButtonGroup; 
import javax.swing.JMenuBar; 
import javax.swing.KeyStroke; 
import javax.swing.ImageIcon; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 
import javax.swing.JScrollPane; 
import javax.swing.JFrame; 

/* MenuLookDemo.java requires images/middle.gif. */ 
/* 
* This class exists solely to show you what menus look like. 
* It has no menu-related event handling. 
*/ 
public class MenuLookDemo { 
    JTextArea output; 
    JScrollPane scrollPane; 
    public JMenuBar createMenuBar() { 
     JMenuBar menuBar; 
     JMenu menu, submenu; 
     JMenuItem menuItem; 
     JRadioButtonMenuItemMenuItem; 
     JCheckBoxMenuItem cbMenuItem; 
     //Create the menu bar. 
     menuBar = new JMenuBar(); 
     //Build the first menu. 
     menu = new JMenu("A Menu"); 
     menu.setMnemonic(KeyEvent.VK_A); 
     menu.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items"); 
     menuBar.add(menu); 
     //a group of JMenuItems 
     menuItem = new JMenuItem("Av text-only menu item", KeyEvent.VK_T); 
     //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead 
     menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK)); 
     menuItem.getAccessibleContext().setAccessibleDescription("This doesn't really do anything"); 
     menu.add(menuItem); 
     ImageIcon icon = createImageIcon("middle.gif"); 
     menuItem = new JMenuItem("Both text and icon", icon); 
     menuItem.setMnemonic(KeyEvent.VK_B); 
     menu.add(menuItem); 
     menuItem = new JMenuItem(icon); 
     menuItem.setMnemonic(KeyEvent.VK_D); 
     menu.add(menuItem); 
     //a group of radio button menu items 
     menu.addSeparator(); 
     ButtonGroup group = new ButtonGroup(); 
     rbMenuItem = new JRadioButtonMenuItem("A radio button menu item"); 
     rbMenuItem.setSelected(true); 
     rbMenuItem.setMnemonic(KeyEvent.VK_R); 
     group.add(rbMenuItem); 
     menu.add(rbMenuItem); 
     rbMenuItem = new JRadioButtonMenuItem("Another one"); 
     rbMenuItem.setMnemonic(KeyEvent.VK_O); 
     group.add(rbMenuItem); 
     menu.add(rbMenuItem); 
     //a group of check box menu items 
     menu.addSeparator(); 
     cbMenuItem = new JCheckBoxMenuItem("A check box menu item"); 
     cbMenuItem.setMnemonic(KeyEvent.VK_C); 
     menu.add(cbMenuItem); 
     cbMenuItem = new JCheckBoxMenuItem("Another one"); 
     cbMenuItem.setMnemonic(KeyEvent.VK_H); 
     menu.add(cbMenuItem); 
     //a submenu 
     menu.addSeparator(); 
     submenu = new JMenu("A submenu"); 
     submenu.setMnemonic(KeyEvent.VK_S); 
     menuItem = new JMenuItem("An item in the submenu"); 
     menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, ActionEvent.ALT_MASK)); 
     submenu.add(menuItem); 
     menuItem = new JMenuItem("Another item"); 
     submenu.add(menuItem); 
     menu.add(submenu); 
     //Build second menu in the menu bar. 
     menu = new JMenu("Another Menu"); 
     menu.setMnemonic(KeyEvent.VK_N); 
     menu.getAccessibleContext().setAccessibleDescription("This menu does nothing"); 
     menuBar.add(menu); 
     return menuBar; 
    } 
    public Container createContentPane() { 
     //Create the content-pane-to-be. 
     JPanel contentPane = new JPanel(new BorderLayout()); 
     contentPane.setOpaque(true); 
     //Create a scrolled text area. 
     output = new JTextArea(5, 30); 
     output.setEditable(false); 
     scrollPane = new JScrollPane(output); 
     //Add the text area to the content pane. 
     contentPane.add(scrollPane, BorderLayout.CENTER); 
     return contentPane; 
    } 
    /** Returns an ImageIcon, or null if the path was invalid. */ 
    protected static ImageIcon createImageIcon(String path) { 
     java.net.URL imgURL = MenuLookDemo.class.getResource(path); 
     if (imgURL != null) { 
      return new ImageIcon(imgURL); 
     } else { 
      System.err.println("Couldn't find file: " + path); 
      return null; 
     } 
    } 
    /** 
    * Create the GUI and show it. For thread safety, 
    * this method should be invoked from the 
    * event-dispatching thread. 
    */ 
    private static void createAndShowGUI() { 
     //Create and set up the window. 
     JFrame frame = new JFrame("MenuLookDemo"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     //Create and set up the content pane. 
     MenuLookDemo demo = new MenuLookDemo(); 
     frame.setJMenuBar(demo.createMenuBar()); 
     frame.setContentPane(demo.createContentPane()); 
     //Display the window. 
     frame.setSize(450, 260); 
     frame.setVisible(true); 
    } 
    public static void main(String[] args) { 
     //Schedule a job for the event-dispatching thread: 
     //creating and showing this application's GUI. 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 
+0

, пожалуйста, отредактируйте свой ответ и отформатируйте код, чтобы сделать его доступным для чтения (есть кнопка вопроса в верхнем углу окна ввода, которая ссылается на подсказку тега) – kleopatra

+0

Выберите свой код и нажмите кнопку '{}' для форматирования кода , – McDowell