2016-02-11 2 views
1

Я хочу знать, можно ли загрузить массив ImageIcon для загрузки изображений из источника on-line, чтобы изображения не сохранялись локально. И есть ли способ добавить прослушиватель действий к массиву кнопок, чтобы при нажатии они открывали новый фрейм.ImageIcon отображает URL-адрес изображения

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.GridLayout; 

import javax.swing.AbstractButton; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 


@SuppressWarnings("serial") 
public class MenuView extends JFrame { 

    String[] names = 
     {"banana split", "chicken with rice", "rice", "noodles", "fried vermicelli", "smoothie"}; 
    String[] namesImage = {"banana split.jpeg", "chicken with rice.jpeg", "rice.jpeg", "noodles.jpeg", 
     "fried vermicelli.jpeg", "smoothie.jpeg"}; 

    ImageIcon[] foodImages = new ImageIcon[namesImage.length]; 
    JButton[] jbtChoc = new JButton[names.length]; 

    { 

    for (int i = 0; i < names.length; i++) { 
     jbtChoc[i] = new JButton(names[i]); 
     for (int x = 0; x < names.length; x++) { 
     foodImages[x] = new ImageIcon(namesImage[x]); 
     } 
    } 
    } 

    /** 
    * Constructor for the MenuView. 
    */ 

    public MenuView() { 
    Container cont = getContentPane(); 
    cont.setLayout(new BorderLayout(5, 5));; 
    cont.setBackground(Color.white); 

    JPanel girdSetup = new JPanel(new GridLayout(2, 3, 5, 5)); 

    for (int i = 0; i < foodImages.length; i++) { 
     jbtChoc[i].setIcon(foodImages[i]); 
     girdSetup.add(jbtChoc[i]); 
     jbtChoc[i].setVerticalTextPosition(AbstractButton.BOTTOM); 
     jbtChoc[i].setHorizontalTextPosition(AbstractButton.CENTER); 
    } 

    cont.add(girdSetup, BorderLayout.CENTER); 
    } 

    /** 
    * Main method for test. 
    * 
    * @param args Initial setup. 
    */ 

    public static void main(String[] args) { 
    MenuView frame = new MenuView(); 
    frame.setTitle("MenuView"); 
    frame.setSize(950, 400); 
    frame.setVisible(true); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    } 
} 
+0

Добавить действие слушателю массива кнопок 'jbtChoc [я] .addActionListener (это),' – Satya

+0

* ", так что, когда они прижаты открыт новый кадр. "* - См. [This] (http://stackoverflow.com/q/9554636/4857909), есть лучшие альтернативы, чем использование нескольких' JFrame'. –

ответ

2

если можно загрузить массив ImageIcon быть загружен с изображениями из включенного источника линии

значок Изображение из URL

URL url = new URL("UrlPath"); 
BufferedImage img = ImageIO.read(url); 
ImageIcon icon = new ImageIcon(img); 

В вашем случае

URL url = new URL(namesImage[x]); 
BufferedImage img = ImageIO.read(url); 
foodImages[x] = new ImageIcon(img); 

есть способ, чтобы добавить слушатель действий в массив кнопок

Добавить действие слушателя массив кнопок

jbtChoc[i].addActionListener(this); 

когда они прижаты новый кадр открыт.

Ваше действие, выполняемое метод

public void actionPerformed(ActionEvent e){ 
    if(e.getSource() instanceof JButton) { 
     //do your action here 
    } 
} 
Смежные вопросы