如何某些图标添加到网格布局

问题描述:

我想添加一个图标的框架,使8queen问题,但是这个代码不工作:如何某些图标添加到网格布局

public class FrameTest { 

    JFrame jf = new JFrame(); 
    JPanel jp = new JPanel(); 
// ImageIcon image = new ImageIcon("chessQueens.png"); 
// JLabel imagelabel = new JLabel(image); 

    public void printFrame() { 

     jf.add(jp); 

     jf.setVisible(true); 
     jf.setSize(500, 500); 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JLabel jl = new JLabel(); 
     JLabel j2 = new JLabel(); 
     JLabel j3 = new JLabel(); 
     JLabel j4 = new JLabel(); 
     jp.setLayout(new FlowLayout(2, 4, 4)); 

      jl.setIcon(new ImageIcon("C:\\Users\\chessQueens.png")); 
      j2.setIcon(new ImageIcon("C:\\Users\\chessQueens.png")); 
      j3.setIcon(new ImageIcon("C:\\Users\\chessQueens.png")); 
      j4.setIcon(new ImageIcon("C:\\Users\\chessQueens.png")); 

      jp.add(jl); 
      jf.add(jp); 

    } 

} 
+0

欢迎堆栈溢出!您可以先参加[tour](http://*.com/tour)并学习[如何提出一个好问题](http://*.com/help/how-to-ask)并创建一个[最小,完整和可验证](http://*.com/help/mcve)示例。你是什​​么意思:它不起作用。 –

有代码中的一些问题:

  1. 在将元素添加到框架之前,您正在调用setVisible()。这将导致元素不显示,除非你重新验证()。最后致电setVisible()
  2. JFrame面板应与setContentPane()设置,而不是add()
  3. 使用一个循环,而不是实例化的紧凑性。

下面的代码工作:

import javax.swing.*; 
import java.awt.*; 
public class T { 
    JFrame jf = new JFrame(); 
    JPanel jp = new JPanel(); 
    ImageIcon image = new ImageIcon("chessQueens.png"); 

    public static void main(String[] args) { 
    T t = new T(); 
    } 

    public T() { 
    printFrame(); 
    } 

    public void printFrame() { 
    jf.add(jp); 
    jf.setSize(500, 500); 
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jp.setLayout(new FlowLayout(2, 4, 4)); 
    for(int i=0; i<4; i++) { 
     JLabel jl = new JLabel(); 
     jl.setIcon(image); 
     jp.add(jl); 
    } 
    jf.setContentPane(jp); 
    jf.setVisible(true); 
    } 
}