나는 스윙의 데스크탑 응용 프로그램을 가지고 있습니다. 배경으로 이미지가있는 JPanel이 있고 그 안에 그림과 같이 두 개의 버튼과 JScrollPane이 있습니다. Frame with JPanel. JScrollPane이 끝나면 투명 이미지가있는 JLabel을 추가하고 몇 초 후에 사라지는 함수 (showLabel())가 있습니다. 문제는 JLabel을 추가 할 때입니다. 그림 Bad shows에서 보이는 JLabel 나쁜 쇼. 내 문제를 도와 줄 수있어?Java 잘못된보기 JPanel
public class MainWindow {
private JFrame frame;
private PanelPopis panelPopis = new PanelPopis(this);
private MyPaint myPaint;
public MainWindow {
setWindow():
BufferedImage image1 = ImageIO.read(getClass().getClassLoader().getResource("poz.png"));
this.myPaint = new MyPaint(image1);
this.frame.add(myPaint);
this.myPaint.add(panelPopis.setPanel());
}
private void setWindow() {
this.frame = new JFrame("DD");
this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.frame.setSize(400, 680);
this.frame.setResizable(false);
this.frame.setLocationRelativeTo(null);
}
private void showLabel(){
JLabel label = new JLabel();
label.setIcon(new ImageIcon(new ImageIcon(getClass().getClassLoader().getResource("postEn.png")).getImage().getScaledInstance(395, 653, Image.SCALE_DEFAULT)));
label.setBackground(new Color(0, 0, 0, 10));
label.setOpaque(true);
this.frame.invalidate();
this.frame.add(label);
this.frame.revalidate();
int delay2 = 3000; // milliseconds
ActionListener taskPerformer2 = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
frame.remove(label);
frame.revalidate();
frame.repaint();
}
};
Timer myTimer2 = new Timer(delay2, taskPerformer2);
myTimer2.setRepeats(false);
myTimer2.start();
}
}
public class MyPaint extends JPanel {
private static final long serialVersionUID = 1L;
BufferedImage image;
public MyPaint(BufferedImage image) {
setOpaque(false);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, 395, 653, this);
}
}
public class PanelPopis extends JPanel {
private static final long serialVersionUID = 7676683627217636485L;
private JButton setLanguage;
private JButton cont;
private JScrollPane scrolPanel;
private JTextArea popis;
private MainWindow mainWindow;
public PanelPopis(MainWindow mainWindow) {
this.mainWindow = mainWindow;
}
public JPanel setPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setOpaque(false);
JPanel panel2 = new JPanel();
Border border = panel2.getBorder();
Border margin = new EmptyBorder(0, 0, 4, 0);
panel2.setBorder(new CompoundBorder(border, margin));
panel2.setOpaque(false);
panel2.add(this.scrolPanel = new JScrollPane(popis));
panel.add(this.setLanguage = new JButton("language settings"), BorderLayout.NORTH);
panel.add(this.cont = new JButton("CONTINUE"), BorderLayout.SOUTH);
panel.add(panel2, BorderLayout.CENTER);
return panel;
}
}
1) 더 도움이 빨리 들어, [MCVE] 또는 게시 [짧은, 자기 것이 포함 된, 올바른 예 (http://www.sscce.org /). 2) 예를 들어 이미지를 얻는 한 가지 방법은 [이 Q & A] (http://stackoverflow.com/q/19209650/418556)에서 볼 수있는 이미지에 핫 링크하는 것입니다. –
당신은 MyPaint에서 다른 것들을 가지고 있습니다 - 사진 위에있는 간단한 사진은 심각한 것이 아닙니다 - 전체 코드보기 – gpasch
@gpasch * "전체 코드보기"* 동의하지 않습니다. MCVE는 *** 가장 좋은 *** 최적의 코드 형태입니다. 코멘트의'[mcve]'는 [mcve]로 자동 확장됩니다. Branislav Pažický - 크게 읽을 수없는 주석에 코드를 넣지 마십시오. 그것은 편집문으로 질문에 포함되어야합니다. –