السلام عليكم
انا عملت برنامج للعبه xo
بــ gui
وما كان فيله اخطاء
لكن اذا اعدت التشغيل اكثر من مره فاحيانا يطلع النتيجه قبل ما يخلص اللاعب ويحدد فايز من عنده
واحيانا يشتغل تمام
فما اعرف اش المشكله
هذي تطلع لي بالاحمر
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.text.PlainView.updateMetrics(PlainView.java:188)
at javax.swing.text.PlainView.updateDamage(PlainView.java:501)
at javax.swing.text.PlainView.insertUpdate(PlainView.java:425)
at javax.swing.text.FieldView.insertUpdate(FieldView.java:276)
at javax.swing.plaf.basic.BasicTextUI$RootView.insertUpdate(BasicTextUI.java:1590)
at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.insertUpdate(BasicTextUI.java:1849)
at javax.swing.text.AbstractDocument.fireInsertUpdate(AbstractDocument.java:185)
at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:734)
at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:693)
at javax.swing.text.PlainDocument.insertString(PlainDocument.java:114)
at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:655)
at javax.swing.text.JTextComponent.replaceSelection(JTextComponent.java:1351)
at javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction.actionPerformed(DefaultEditorKit.java:859)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1639)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2851)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2886)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2814)
at java.awt.Component.processEvent(Component.java:6066)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676)
at java.awt.Component.dispatchEventImpl(Component.java:4524)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 25 seconds)وهذا كود البرنامج معليش امكن مش مرتب
class xo extends JFrame
{
JTextField r1c1 = new JTextField();
JTextField r1c2 = new JTextField();
JTextField r1c3 = new JTextField();
JTextField r2c1 = new JTextField();
JTextField r2c2 = new JTextField();
JTextField r2c3 = new JTextField();
JTextField r3c1 = new JTextField();
JTextField r3c2 = new JTextField();
JTextField r3c3 = new JTextField();
JButton note = new JButton("NOTE");
JButton startPlaying = new JButton("START PLAYING");
JLabel hello=new JLabel(" Hello Dear in XO Game");
JPanel screen = new JPanel();
Font font = new Font("SansSerif", Font.BOLD, 20);
Container w =getContentPane();
static String q1="";
public xo()
{
setTitle("XO Game");
setSize(400,400);
setLocationRelativeTo(null);
hello.setFont(font);
hello.setForeground(Color.red);
w.setLayout(new BorderLayout());
w.add(hello, BorderLayout.CENTER);
w.add(note , BorderLayout.NORTH);
w.add(startPlaying, BorderLayout.SOUTH);
r1c1.setFont(font); r1c2.setFont(font); r1c3.setFont(font);
r2c1.setFont(font); r2c2.setFont(font); r2c3.setFont(font);
r3c1.setFont(font); r3c2.setFont(font); r3c3.setFont(font);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//---------------note-------------------------------
note.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// code to be executed when button is pushed
JOptionPane.showMessageDialog(null ,
"THE ROLES IS,, \n "
+ "1- we need two player \n"
+ "2- each player choice differ letter to use it \n"
+ "3- the one who can make 3 of her letter near each other will win \n"
+ "finaly ,, I hop you to like my Game ,, \n Asmaa Assulami");
}
});
//---------------------------start playing-----------------------------------
startPlaying.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// code to be executed when button is pushed
w.removeAll();
SwingUtilities.updateComponentTreeUI(w);
hello.setText(" sTART pLAYING ");
screen.setLayout(new GridLayout(3,3));
screen.add(r1c1); screen.add(r1c2); screen.add(r1c3);
screen.add(r2c1); screen.add(r2c2); screen.add(r2c3);
screen.add(r3c1); screen.add(r3c2); screen.add(r3c3);
w.add(hello , BorderLayout.NORTH);
w.add(screen , BorderLayout.CENTER);
}// end button start playing
});
//------------------------------------------------------------------------------
}//end of Constractor
}// end of class xo
public class Main extends xo
{
public static void main(String[] args)
{
Main appl = new Main();
appl.setVisible(true);
while(true)
{
appl.look();
appl.save();
if(!q1.equalsIgnoreCase(""))
appl.soul();
else
continue;
break;
}// end while
}// end main
public void look()
{
// rows
if(r1c1.getText().equalsIgnoreCase(r1c2.getText()) &&
r1c1.getText().equalsIgnoreCase(r1c3.getText()) && !r1c1.getText().equalsIgnoreCase(""))
{
q1=r1c1.getText();
}
if(r2c1.getText().equalsIgnoreCase(r2c2.getText())
&& r2c1.getText().equalsIgnoreCase(r2c3.getText())&&!r2c1.getText().equalsIgnoreCase(""))
{
q1 = r2c1.getText();
}
if(r3c1.getText().equalsIgnoreCase(r3c2.getText())
&& r3c1.getText().equalsIgnoreCase(r3c3.getText())&& !r3c1.getText().equalsIgnoreCase(""))
{
q1 = r3c1.getText();
}
// coulumn
if(r1c1.getText().equalsIgnoreCase(r2c1.getText())
&& r1c1.getText().equalsIgnoreCase(r3c1.getText())&& !r1c1.getText().equalsIgnoreCase(""))
{
q1=r1c1.getText();
}
if(r1c2.getText().equalsIgnoreCase(r2c2.getText())
&& r1c2.getText().equalsIgnoreCase(r3c2.getText())&& !r1c2.getText().equalsIgnoreCase(""))
{
q1 = r1c2.getText();
}
if(r1c3.getText().equalsIgnoreCase(r2c3.getText())
&& r1c3.getText().equalsIgnoreCase(r3c3.getText())&& !r1c3.getText().equalsIgnoreCase(""))
{
q1 = r1c3.getText();
}
// مائل
if(r1c1.getText().equalsIgnoreCase(r2c2.getText())
&& r1c1.getText().equalsIgnoreCase(r3c3.getText())&& !r1c1.getText().equalsIgnoreCase(""))
{
q1 = r1c1.getText();
}
if(r1c3.getText().equalsIgnoreCase(r2c2.getText())
&& r1c3.getText().equalsIgnoreCase(r3c1.getText())&& !r1c3.getText().equalsIgnoreCase(""))
{
q1 = r1c3.getText();
}
// draw
if(!r1c1.getText().equalsIgnoreCase("") &&!r1c2.getText().equalsIgnoreCase("") &&!r1c3.getText().equalsIgnoreCase("")
&&!r2c1.getText().equalsIgnoreCase("") &&!r2c2.getText().equalsIgnoreCase("") &&!r2c3.getText().equalsIgnoreCase("")
&&!r3c1.getText().equalsIgnoreCase("")&&!r3c2.getText().equalsIgnoreCase("")&&!r3c3.getText().equalsIgnoreCase(""))
q1=" you are DRAW";
}//end of look
public void save()
{
if(!r1c1.getText().equalsIgnoreCase(""))
r1c1.setEditable(false);
if(!r1c2.getText().equalsIgnoreCase(""))
r1c2.setEditable(false);
if(!r1c3.getText().equalsIgnoreCase(""))
r1c3.setEditable(false);
if(!r2c1.getText().equalsIgnoreCase(""))
r2c1.setEditable(false);
if(!r2c2.getText().equalsIgnoreCase(""))
r2c2.setEditable(false);
if(!r2c3.getText().equalsIgnoreCase(""))
r2c3.setEditable(false);
if(!r3c1.getText().equalsIgnoreCase(""))
r3c1.setEditable(false);
if(!r3c2.getText().equalsIgnoreCase(""))
r3c2.setEditable(false);
if(!r3c3.getText().equalsIgnoreCase(""))
r3c3.setEditable(false);
}// end of save
public void soul()
{
SwingUtilities.updateComponentTreeUI(w);
setSize(500 , 500);
w.removeAll(); screen.removeAll();
if(q1.equalsIgnoreCase(" you are DRAW"))
hello.setText(" "+q1);
else
hello.setText(" "+q1+" Is win ");
screen.add(hello);
w.add(screen , BorderLayout.CENTER);
}// end soul
}// end of class Mainممكن شوهوا الخطأ؟؟



