如何某些图标添加到网格布局
问题描述:
我想添加一个图标的框架,使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);
}
}
答
有代码中的一些问题:
- 在将元素添加到框架之前,您正在调用
setVisible()
。这将导致元素不显示,除非你重新验证()。最后致电setVisible()
。 - 在
JFrame
面板应与setContentPane()
设置,而不是add()
- 使用一个循环,而不是实例化的紧凑性。
下面的代码工作:
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);
}
}
欢迎堆栈溢出!您可以先参加[tour](http://*.com/tour)并学习[如何提出一个好问题](http://*.com/help/how-to-ask)并创建一个[最小,完整和可验证](http://*.com/help/mcve)示例。你是什么意思:它不起作用。 –