스윙 GUI로 Java Desktop Application을 만들었습니다. 메뉴 막대에 "정보"항목이 있습니다. 이 "정보"메뉴 항목을 클릭하면 JDialog가 JOptionPane.showMessageDialog (...) 아이콘, 프로그램에 대한 텍스트, 대화 상자를 닫는 "OK"버튼으로 표시됩니다.배경에 Java JOptionPane 사용자 정의 draw
대화 상자의 배경을 돌아 다니며 색상을 변경하는 하나 이상의 볼 (원) 효과를 그립니다.
@Titus의 솔루션 업데이트 된 코드 :
사용자위한 JOptionPane 클래스 :
class MyEffectPane extends JOptionPane {
public MyEffectPane(String message, int type){
super(message, type);
makeOpa(this);
}
// needed to make the drawings visible
void makeOpa(JComponent comp){
for(Component c : comp.getComponents()){
if(c instanceof JPanel){
JPanel p = (JPanel)c;
p.setOpaque(false);
makeOpa(p);
}
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int width = getWidth();
int height = getHeight();
g.setColor(Color.BLACK);
g.fillOval(width/2-50, height/2-50, 50, 50);
}
}
전화/쇼 대화 :
MyEffectPane pane = new MyEffectPane("message....", JOptionPane.INFORMATION_MESSAGE);
JDialog dialog = pane.createDialog(this, "About");
//dialog.setIconImage(icon.getImage());
dialog.setVisible(true);
dialog.dispose();
'showMessageDialog' 메쏘드는'정적'입니다 (당신은 그것을 오버라이드 할 수 없습니다). 그리고 그것 자신의'JOptionPane' 객체를 만듭니다. – Titus
@Titus 고맙습니다. 내 문제에 대한 해결책을 알고 계십니까? – trinity420
디버깅 문에 대해서는'System.out.println()'을 사용하지 마십시오. 'System.out'은 버퍼링 된 스트림이기 때문에 반드시 실행될 때마다 라인을 출력하지는 않습니다. 대신 즉시 보장 된 출력을 위해'System.err.println()'을 사용하십시오. –