2015-05-20 4 views
2

Я пытаюсь создать игру в судоку. Я хочу использовать JSwing API. Итак, я использую массив JLabels для отображения сетки. У меня есть изображение, нарисованное сеткой 3x3, и я хотел бы показать это в сетке 3x3. Моя проблема заключается в том, что изображение не будет отображаться. Может ли кто-нибудь помочь мне решить проблему?Array of JLabel ImageIcon

Мой текущий код выглядит следующим образом: он разделен на два класса.

Main.class

package com.brendenbunker; 

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

public class Main{ 

    FileMaker fileMaker; 

    void init() { 
     fileMaker = new FileMaker(); 
    } 

    public static void main(String args[]){ 
     ScreenGenerator gui = new ScreenGenerator(); 
     gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
     double width = gui.gridPic.getIconWidth(); 
     double height = gui.gridPic.getIconHeight(); 
     int h = (int) height*4; 
     int w = (int) width*3; 

     gui.setSize(w,h); 
     gui.setTitle("Suduko"); 
     gui.setVisible(true); 
    } 

} 

ScreenGenerator.class

package com.brendenbunker; 

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

public class ScreenGenerator extends JFrame{ 

    //Intro Components 
    //JLabel temp; 
    JLabel[] gridLabel; 
    ImageIcon gridPic; 
    //intro Vars 


    public ScreenGenerator() { 

     setLayout(new FlowLayout()); 

     gridPic = new ImageIcon(getClass().getResource("/Grid_Unified.png")); 
     gridLabel = new JLabel[8]; 

     for (int i=0; i>=9; i++) { 
      gridLabel[i] = new JLabel("Hello"); 
     } 

     for (int i=0; i>=9; i++) { 
      gridLabel[i].setIcon(gridPic); 
      add(gridLabel[i]); 
     } 

    } 
} 

Все помогли Appericiated

+0

проверить свою петлю цикла ... он никогда не войдет в цикл. Нет необходимости проверять какой-либо другой пример. Это абсолютно работает. Просто вы должны изменить условие 'for (..; .. ; ..) 'loop ... – ELITE

ответ

0

изменение за цикл, он не будет входить в петлю в соответствии с вашим состоянием ,

петля изменения этого ..

for (int i=0; i<8; i++) { 
     gridLabel[i] = new JLabel("Hello"); 
    } 

    for (int i=0; i<8; i++) { 
     gridLabel[i].setIcon(gridPic); 
     add(gridLabel[i]); 
    } 

он будет работать ..

0
package com.brendenbunker; 

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

public class ScreenGenerator extends JFrame{ 

    //Intro Components 
    //JLabel temp; 
    JLabel[] gridLabel; 
    ImageIcon gridPic; 
    //intro Vars 


    public ScreenGenerator() { 

     setLayout(new FlowLayout()); 

     gridPic = new ImageIcon(getClass().getResource("/Grid_Unified.png")); 
     gridLabel = new JLabel[8]; 

     //for (int i=0; i>=9; i++) { 
      //gridLabel[i] = new JLabel("Hello"); 
     // } 

     for (int i=0; i>=9; i++) { 
      gridLabel[i] = new JLabel(gridPic); 
      add(gridLabel[i]); 
     } 

    } 
} 

, если вам нужно иконки затем использовать код выше, если вы хотите текст и значок, то следующее изменение поможет вы

gridLabel[i] = new JLabel("hello", gridPic, JLabel.CENTER); 

надеюсь, что помощь

0

Посмотрите на следующее: Displaying Image in Java

Я использовал для программирования на Java. Я перешел на Python, но я помню много трудностей с этим! Используйте файловую систему IO для ее отображения. Здесь вы найдете примеры.

Исправить меня, если я ошибаюсь, это Java?

Смежные вопросы