그리드가인 프로그램을 만들고 있습니다. "add image"
단추를 누르면 그림이 표의 첫 번째 JPanel
에 나타나고 카운터가 1 씩 증가합니다. 그 이후부터는 "add image"
을 다시 클릭 할 때마다 이미지가 다음 JPanel
에 추가됩니다. 어떤 이유로 단추는 첫 번째 JPanel
에 이미지를 추가 한 다음 작동을 멈 춥니 다. 지금까지 제가 가지고있는 코드는 다음과 같습니다.여러 JPanels에서 이미지를 표시하려고 시도합니다.
public class ImageGrid extends JFrame {
static JPanel[] imageSpaces = new JPanel[12];
int imageCounter = 0;
ImageGrid() {
this.setTitle("Image Grid");
setSize(750, 750);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(3, 4, 10, 5));
p3.setBackground(Color.WHITE);
p3.setOpaque(true);
p3.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
for (int j = 0; j < imageSpaces.length; j++) {
imageSpaces[j] = setImageSpace();
p3.add(imageSpaces[j]);
}
MyButtonPanel p1 = new MyButtonPanel();
add(p1, BorderLayout.SOUTH);
add(p3, BorderLayout.CENTER);
}
public JPanel setImageSpace() {
JPanel test;
test = new JPanel();
test.setOpaque(true);
test.setPreferredSize(new Dimension(100, 100));
return test;
}
class MyButtonPanel extends JPanel implements ActionListener {
final JButton addImage = new JButton("Add Image");
ImageIcon lorryPicture = new ImageIcon(ImageGrid.class.getResource("/resources/lorry.png"));
JLabel lorryImage = new JLabel(lorryPicture);
MyButtonPanel() {
add(addImage);
addImage.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addImage) {
imageSpaces[imageCounter].add(lorryImage);
revalidate();
repaint();
imageCounter++;
}
}
}
public static void main(String[] args) {
ImageGrid test = new ImageGrid();
test.setVisible(true);
}
}
1을 사용하는
JLabel
를 사용하고setIcon
부를 수있는 더 Initial Threads에서 참조 [MCVE] (HTTP를 게시 할 수 있습니다. co.kr/help/mcve) (최소한의 완전하고 검증 가능한 예). 이 예는 수입과 2 개의 이미지가 필요합니다. 2) 예를 들어 이미지를 얻는 한 가지 방법은 [이 답변] (http://stackoverflow.com/a/19209651/418556)에 표시된 이미지에 핫 링크하는 것입니다. –
'imageSpaces [imageCounter] .add (lorryImage);'어디에서 코드가 * 다른 * 이미지를로드합니까? –
코드를 최소한으로 유지하기 위해 하나의 이미지 만 사용 했으므로이 프로그램에서는 각 JPanel에 동일한 이미지를 추가하려고했습니다. 나는 카운터가 증가함에 따라 같은 이미지가 imageSpaces Array 내의 다음 JPanel에 추가 될 것이라고 추정했습니다. 그러나 이것은 작동하지 않습니다. – user3120540