مساء الخير
يعطيكم العافيه
واجهتني مشكله في ال multi action listeners ما عرفت سببها
وهي عدم اعطائي النتائج المتوقعه
البرنامج بشكل مختصر.. يقوم بفتح frame with 4 widgets
* 1 button for change color of the circle
* 1 button for change the text
* circle
* & the text
i
ال button لتغيير لون لون الدائره لايعمل.. ولا اعرف السبب
ال button لتغير ال text .. يقوم بدوره "تغيير النص" مع دور زر تغيير اللون .. يقوم بدورين
مع ذلك لا يقوم بتغيير اللون إلا مره واحده ... والمفروض يتغير اللون في كل مره يتم فيها ضغط الزر
طبعاً البرنامج عطاني 2 exciptions ولا اعلم سببهما .. لكن حاولت اصلاح الأستثنائات بالطريقه التي سوف ترونها في الكود
واتمنى لو كانت طريقة إصلاحي للئستثنائات خاطئه او حتى لو تعلمون بطريقه افضل ..
اتمنى إرشادي إليها لإني إلى الآن اجهل الكثير من طرق التعامل مع الإستثنائات
( استخدمت run time exciption لأنه هذا ما اخبرني به عند تشغيلي البرنامج ) ولا اعلم صحة ما قمت به
والآن هذا هو البرنامج
import java.awt.event.*;
import java.awt.*;
public class SimpleGUI {
JFrame frame;
JLabel label;
public static void main(String[] args) {
SimpleGUI gui = new SimpleGUI();
try {
gui.go();
} catch(RuntimeException ex) {}
}
public void go () /* throws RuntimeException */ {
try {
cbutton.addActionListener(new ColorListener());
} catch(RuntimeException ex) {}
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton lbutton = new JButton("change label");
lbutton.addActionListener(new LabelListener());
JButton cbutton = new JButton("change circle");
label = new JLabel("i'm a labele");
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH, cbutton);
frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
frame.getContentPane().add(BorderLayout.EAST, lbutton);
frame.getContentPane().add(BorderLayout.WEST, label);
frame.setSize(300, 300);
frame.setVisible(true);
}
class LabelListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
label.setText("ouch !");
}
class ColorListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
frame.repaint();
}
}
}
}
import javax.swing.*;
---------------------------------------------------
import javax.swing.*;
public class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
int red = (int) (Math.random() * 255);
int green = (int) (Math.random() * 255);
int blue = (int) (Math.random() * 255);
Color randomColor = new Color(red, green, blue);
g2d.setColor(randomColor);
g2d.fillOval(10, 10, 300, 300);
}
}
import java.awt.*;
i
هذا كل شيئ :)