0
는 JFrame의 구성 요소에 메도를 해고 할 수 없습니다 내가 해주 발사 버튼 Marchewkaim 점점 오류 널 포인터 예외하려는 경우 :내가 문제를 가지고 어디 여기
public class MainFrame extends JFrame {
public static void Draw()
{
mp.repaint();
}
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
static private MyPanel mp = null;
/**
* This method initializes mp
*
* @return MyPanel
*/
private MyPanel getMp() {
if (mp == null) {
mp = new MyPanel();
mp.setLayout(null);
}
return mp;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainFrame thisClass = new MainFrame();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public MainFrame() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new CardLayout(0, 0));
}
return jContentPane;
}
private void initialize() {
this.setSize(668, 402);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
JPanel panel = new JPanel();
panel.setLayout(null);
this.getContentPane().add(panel, "Main");
panel.setVisible(true);
JButton btnMarchewka = new JButton("Marchewka");
btnMarchewka.setBounds(12, 25, 113, 49);
panel.add(btnMarchewka);
JButton btnArbuz = new JButton("Arbuz");
btnArbuz.setBounds(12, 87, 113, 49);
panel.add(btnArbuz);
JButton btnUsun = new JButton("Usun ostatni");
btnUsun.setBounds(12, 149, 113, 49);
panel.add(btnUsun);
btnMarchewka.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
Draw();
}
});
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
} // @jve:decl-index=0:visual-constraint="10,10"
또 다른 클래스
public class MyPanel extends JPanel {
public GObject c;
public GObject w;
// @jve:decl-index=0:
private static final long serialVersionUID = 1L;
public List<GObject> list= new ArrayList<GObject>();
/**
* This is the default constructor
*/
public MyPanel() {
super();
initialize();
}
public void addCarrot()
{
GObject[] c=new GObject[list.size()+1];
c[list.size()]=new Carrot();
list.add(c[list.size()]);
MainFrame.Draw();
}
public void addWatermelon()
{
GObject[] w=new Watermelon[list.size()+1];
w[list.size()]=new Watermelon();
list.add(w[list.size()]);
MainFrame.Draw();
}
public void remove()
{
list.remove(list.size()-1);
MainFrame.Draw();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(400, 400);
this.setLayout(null);
}
@Override
protected void paintComponent(Graphics arg0) {
// TODO Auto-generated method stub
super.paintComponent(arg0);
if
(list!=null){
for(int i=0;i<list.size();i++)
{
list.get(i).drawMe(arg0);
}
}
}
}
I을 혼자서이 오류를 해결하려고했지만 아무 것도 가리키지 않는 곳을 찾을 수 없습니다. 이것을 6 시간 동안하고 병 들고 피곤합니다. 몇 가지 팁을 찾고 있습니다.
'btnMarchewka'를 의미합니까? 또한 Java 규약으로 인해 메소드에'Draw()'를 쓰지 말고'draw()'에 이름을 붙이면 안됩니다. 제 생각에'Draw()'- 메서드는'repaint()'전에'validate()'가 없습니다. – hamena314