JPanel 안에 JLabel (ImageIcon 포함) 및 사용자 정의 ImagePanel이있는 애플릿이 있습니다. 몇 가지 이유로 JLabel은 처음에는 Mac OS X에서 사파리와 파이어 폭스에 나타나지 않지만 다른 OS (윈도우, 리눅스)에서는 괜찮습니다. 이제 동일한 애플릿에서 이미지를 다른 이미지로 넘기는 버튼이 있습니다. mac os의 safari/firefox에서 버튼을 클릭하면 두 번째 이미지가 표시되고 다시 클릭하면 첫 번째 이미지가 나타납니다 !! 이 문제의 원인은 무엇입니까? Windows 용 사파리에서도 애플릿은 정상적으로 작동합니다. 즉 첫 번째 이미지가로드되어 표시됩니다.Jappel이 사파리에 나타나지 않습니다.
어떤 도움을 주시면 감사하겠습니다
private void flipImage()
{
label.setIcon(new ImageIcon(backImg));
label.repaint();
lcdpanel.setVisible(false);
lcdpanel.repaint();
mainpanel.repaint();
this.repaint();
}
UI 코드
public void createUI(){
mainpanel = new JPanel();
mainpanel.setMaximumSize(new Dimension(154, 212));
mainpanel.setMinimumSize(new Dimension(154, 212));
mainpanel.setName("mainPanel");
mainpanel.setLayout(new BorderLayout());
lcdpanel = new ImagePanel(bgLcdImage);
lcdpanel.setBounds(22, 22, 110, 28);
bgImage = Toolkit.getDefaultToolkit().createImage(bytes);//BufferedImage
label = new JLabel(new ImageIcon(bgImage));
mainpanel.add(lcdpanel);
mainpanel.add(label);
mainpanel.invalidate();
getContentPane().add(mainpanel);
repaint();
}
버튼 클릭 코드입니다.
감사
애플릿이로드 될 때 'lcdPanel'과'JLabel'을 모두 화면에 표시 하시겠습니까? 'setBounds'는'Jpanel'이 디폴트'FlowLayout'을 사용하고 있기 때문에 작동하지 않을 것입니다. 그리고'setBounds'는 나쁜 연습이지만 컨테이너의 레이아웃이'null'으로 설정된 경우에만 작동합니다 .. –
예 두 가지 모두 표시하고 싶습니다. 둘 다 Windows/Linux에서 실행하지만 Mac OS 브라우저에서는 수행하지 마십시오. – user681443
어디에서'JLabel '을 표시 하시겠습니까? –