C:\Documents and Settings>java Test Exception in thread "main" java.lang.NullPointerException at Lesson2_6.<init>(Lesson2_6.java:16) at Lesson2_6.main(Lesson2_6.java:29)
これを改善するにはこのプログラムのどこを直せばいいのかをご教授下さい。 プログラムの内容は、実行したら実行画面が出て、2つのテキストフィールドに数字を1つずつ入力し、値が同じかどうかを識別するもののつもりです。 「〜の内容はこの流れ的にはおかしい」みたいな意見も大歓迎です。 どうかよろしくお願いしますm(_ _)m <JDK6で作成> import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test extends JFrame { TileTrailer testTrailer; JButton setParam; JTextField tilePos; JTextField trailPos; JLabel stat; Test() { setParam=new JButton("設定"); tilePos=new JTextField("0",3); trailPos=new JTextField("0",3); testTrailer=new TileTrailer(); stat=new JLabel(testTrailer.getPosition()+":"+testTrailer.getGameTile().getPosition()); setParam.addActionListener(new changeStat()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Test"); getContentPane().setLayout(new FlowLayout()); getContentPane().add(tilePos); getContentPane().add(trailPos); getContentPane().add(setParam); getContentPane().add(stat); setSize(300,100); setVisible(true); } public static void main(String argv[]) { new Test(); } class changeStat implements ActionListener { public void actionPerformed(ActionEvent e) { String com = e.getActionCommand(); String right; testTrailer.getGameTile().setPosition(Integer.parseInt(tilePos.getText())); testTrailer.setPosition(Integer.parseInt(trailPos.getText())); if(testTrailer.isRightPosition()) right=":同値"; else right=":非同値"; stat.setText(testTrailer.getPosition()+":"+testTrailer.getGameTile().getPosition()+right); } } } class TileTrailer extends JPanel implements MouseListener{ GameTile ownTile; boolean enable=false; static final int NONUM=-1; int trailerPosition; public TileTrailer(GameTile tile,int position){ ownTile=tile; trailerPosition=position; if(tile==null){ GameTile ownTile; trailerPosition=NONUM; } } public int getPosition(){ return trailerPosition; } public void setPosition(int trailer){ this.trailerPosition=trailer; } public boolean isRightPosition(){ if(isRightPosition()){ return true; } else{ return false; } } GameTile getGameTile(){ return ownTile; } void setGameTile(GameTile own){ ownTile=own; } public TileTrailer(){ GameTile ownTile; trailerPosition=NONUM; addMouseListener(this); } public void paint(Graphics g){ g.drawImage(ownTile.getImage(),0,0,getWidth(),getHeight(),this); g.setColor(Color.white); g.drawRect(0,0,getWidth()-1,getHeight()-1); } public boolean isEnabled(){ return enable; } void setEnable(boolean en){ enable=en; } public void mouseClicked(MouseEvent e){ if(isEnabled()){ ownTile.reverseStat(); this.repaint(); } } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } public void mousePressed(MouseEvent e){ } public void mouseReleased(MouseEvent e){ } } class GameTile{ boolean tileStat; int tilePosition; static final int NONUM=-1; ImageIcon face,back; GameTile(String pic,boolean stat,int position){ if(pic==null){ face=new ImageIcon("unknown.jpg"); } else{ face=new ImageIcon(pic); } back=new ImageIcon("back.jpg"); tileStat=stat; tilePosition=position; } Image getImage(){ if(tileStat==true){ return face.getImage(); } else{ return back.getImage(); } } int getPosition(){ return tilePosition; } void setPosition(int tilePosition){ this.tilePosition=tilePosition; } GameTile(boolean tileStat,int tilePosition){ this(null,tileStat,tilePosition); } boolean getStat(){ return tileStat; } void reverseStat(){ if(tileStat==false){ tileStat=true; } else{ tileStat=false; } } public String toString(){ if(tileStat==true){ return "*"; } else{ return "."; } } GameTile(){ this(null,false,NONUM); } }