내 이미지가 서버에서 내 프로그램으로 전달되고 문자열로 저장됩니다. 해당 문자열을 이미지로 변환 한 다음 해당 이미지를 GridBagLayout
의 레이블 안에 차례로 표시하려고합니다. 아래 코드를 실행하면 빈 프레임이 생깁니다. 실행 중에는 예외가 없습니다. ToolKit
의 이미지 객체를 디버그 할 때 높이와 너비가 -1이라고 가정합니다 (그러나 source = ByteArrayImageSource
의 "imagedata"는 바이트 [5144]를가집니다). 어떤 아이디어?GridBagLayout 내의 이미지 표시 Java
추가 정보 참고 : 이미지는 C#에서 직렬화되고 Java 내에서 직렬화되기 때문에 프로그램에 String으로 저장됩니다. 이 프로세스는 deserialize 프로세스에서 byte[]
을 좋아하지 않으므로 문자열로 저장하고 이미지를 사용하려면 getBytes
을 사용하십시오.
imageToDisplay = Toolkit.getDefaultToolkit().createImage(myString.getBytes());
ImageIcon logoIcon = new ImageIcon(imageToDisplay);
JLabel logolabel = new JLabel(logoIcon);
mainPanel.add(logolabel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL,
new Insets(2, 2, 2, 2), 0, 0));
mainFrame.add(mainPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(2, 2, 2, 2), 0, 0));
간단한 FlowLayout으로 시도해 볼 수 있습니까? –
나는 FlowLayout과 GridLayout을 사용해 보았는데, 항상 빈 프레임이었다. –
이미지로드가 완료되면 누군가 업데이트를받지 못합니다. –