• 0
Mogaahed

ازاى اخلى JDialog يعمل Flash او اهتزار عن الضغط خارجه

سؤال

السلام عليكم ورحمة الله وبركاته ...

عندى استفسار فى واجهات المستخدم GUI , لو عندى JFrame عن الضغط على زر ما فيه يظهر JDialog , سؤالى هنا لو عايز اخلى الــJDialog ده يعمل فلاش او اهتزاز لما اضغط على الفريم , ازاااااااااى ؟؟؟؟؟؟؟

ده الكود اللى انا عملته :

 
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Mogahed
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame implements ActionListener ,WindowFocusListener{
// VARIABLES
JDialog d = new JDialog();
Main(){
super("Test Mouse Listening with windowfocus");
setDefaultCloseOperation(3);
setSize(600,600);
JPanel mainP = new JPanel();
JButton click = new JButton("Click");
mainP.setLayout(new FlowLayout());
click.addActionListener(this); ;
mainP.add(click);
add(mainP);
setVisible(true);
}
// ENENT HANDLING
public void actionPerformed(ActionEvent e){
getD();
setEnabled(false);
}
public void windowGainedFocus(WindowEvent e){
if(e.getSource()==d){
System.out.println("Window Gained focus..");
}
}
public void windowLostFocus(WindowEvent e){
System.out.println("Window Gained focus..");
// What Should Happen There tp Flash this Dialog ?
}
// METHODS
JDialog getD(){
d = new JDialog();
// Adjust d
d.setTitle("Dialog..> Focus is Heeere");
d.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
d.setSize(400,150);
d.setLocation(100,250);
d.setVisible(true);
d.setFocusable(true);
d.addWindowFocusListener(this);
d.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
setEnabled(true);
}
});
return d;
}
public static void main(String[] args) {
Main flashingWindow =new Main();
}

}

كل اللى ان عايزه ان الـJDialog بتاعى يعمل فلاش لو اليوزر حاول يستخدم الــJFrame ,, زى مثلا الـ MessageDialog اللى فى الــ JOtionPane بالظبط ...

وشكرا . :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0

السلام عليكم

خذ هذا الكلاس MsgDialog والذي يعمل ارتجاج عند ظهوره




import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.Timer;

public class MsgDialog extends Object{


private JDialog dialog;
private Point naturalLocation;
private long startTime;
private Timer shakeTimer;
private final double TWO_PI = Math.PI * 2.0;

public MsgDialog() {

}

public void showVerbDialog(String msg,String title){
JOptionPane pane = new JOptionPane (msg,JOptionPane.ERROR_MESSAGE, JOptionPane.CLOSED_OPTION);
dialog = pane.createDialog(null,title);
dialog.setModal(false);
dialog.setVisible(true);
startShake(10,50,1000,5);
}

public void showVerbDialog(String msg,String title, int DISTANCE , double CYCLE){
JOptionPane pane = new JOptionPane (msg,JOptionPane.ERROR_MESSAGE, JOptionPane.CLOSED_OPTION);
dialog = pane.createDialog(null,title);
dialog.setModal(false);
dialog.setVisible(true);
startShake(DISTANCE ,CYCLE,1000,5);
}

public void showVerbDialog(String msg,String title, int DISTANCE , double CYCLE, int TimeDuration,int DelayTime){
JOptionPane pane = new JOptionPane (msg,JOptionPane.ERROR_MESSAGE, JOptionPane.CLOSED_OPTION);
dialog = pane.createDialog(null,title);
dialog.setModal(false);
dialog.setVisible(true);
startShake(DISTANCE ,CYCLE,TimeDuration,DelayTime);
}



private void startShake(final int SHAKE_DISTANCE ,final double SHAKE_CYCLE,final int SHAKE_DURATION,int SHAKE_UPDATE) {
naturalLocation = dialog.getLocation();
startTime = System.currentTimeMillis();
shakeTimer = new Timer(SHAKE_UPDATE,
new ActionListener( ) {
@Override
public void actionPerformed (ActionEvent e) {
// calculate elapsed time
long elapsed = System.currentTimeMillis()-
startTime;
// use sin to calculate an x-offset
double waveOffset = (elapsed % SHAKE_CYCLE) /
SHAKE_CYCLE;
double angle = waveOffset * TWO_PI;


// offset the x-location by an amount
// proportional to the sine, up to
// shake_distance
int shakenX = (int) ((Math.sin (angle) *
SHAKE_DISTANCE) +
naturalLocation.x);

dialog.setLocation (shakenX, naturalLocation.y);
dialog.repaint( );


// should we stop timer?
if (elapsed >= SHAKE_DURATION)
stopShake();
}
}
);
shakeTimer.start( );


}


private void stopShake( ) {
shakeTimer.stop( );
dialog.setLocation (naturalLocation);
dialog.repaint( );
}



}




وطريقة استدعاه




MsgDialog msgDialog=new MsgDialog();
msgDialog.showVerbDialog("اهلا باجمل منتدى....تحياتي","الفريق العربي للبرمجة");

سلامي للجميع

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور جدا استاذ alionline على الرد والكود الجميل بتاعك ,,, لكن ليس هذا ما اريده :(

لو حضرتك اطلعت ع الكود اللى انا عامله كنت ممكن تفهم قصدى , واعتقد واضح من عنوان الموضوع ,,,

المهم انا عايز لما اظهر كائن من الـJDialog يحصل حاجتين :

اولا: الـJFrame يصبح غير متاح ... ودى انا عرفت اعملها


setEnabled(false);

غير كده اليوزر لو حاول يتجاهل الـJDialog اللى ظهر ,, الـJDialog يهتز والبرنامج يعطى جرس او رنه علشان ينبه اليوزر ..

مش عارف الموضوع صعب ولا ايه ,, بس انا بشوف الحوار ده فى اى برنامج

يا ريت لو حد عارف دى ممكن تتعمل ازاى يقول ,, وجزاكم الله خيرا :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بإمكانك إصدار صوت تنبيه من خلال الأمر :


Toolkit tk = Toolkit.getDefaultToolkit();
tk.beep();

أيضا اطلع على الرابط :

http://www.java2s.com/Code/Java/Swing-Components/Shakeadialog.htm

تحياتي

تم تعديل بواسطه JavaPorgrammer
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .