2013-10-02 3 views
-2

У меня есть эта часть моего кода, но она не будет инициализирована, и я не знаю, как это сделать. Она продолжает давать мне ошибку, такие как Исключение в потоке «основной» java.lang.NullPointerException на memor.main (memor.java:131)Как инициализировать графику? потому что он говорит, что он не был инициализирован

import java.awt.*; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.GridLayout; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.SwingConstants; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class memor extends JFrame 
{ 
private static final long serialVersionUID = 1L; 


public static void main(String args[]){ 



final JPanel pan; 
GridLayout h=new GridLayout(3,3); 


pan =new JPanel(h); 
JButton button1= new JButton("1"); 
pan.add(button1); 
final JLabel label1= new JLabel("hi"); 
label1.setVisible(false); 
pan.add(label1); 
JButton button2= new JButton("2"); 
pan.add(button2); 
final JLabel label2= new JLabel("hi"); 
label2.setVisible(false); 
pan.add(label2); 
JButton button3= new JButton("3"); 
pan.add(button3); 
final JLabel label3 = new JLabel("hi"); 
label3.setVisible(false); 
pan.add(label3); 
JButton button4 = new JButton("4"); 
pan.add(button4); 
final JLabel label4 = new JLabel("hi"); 
label4.setVisible(false); 
pan.add(label4); 
JButton button5= new JButton("5"); 
pan.add(button5); 
final JLabel label5= new JLabel("hi"); 
label5.setVisible(false); 
pan.add(label5); 
JButton button6= new JButton("6"); 
pan.add(button6); 
final JLabel label6= new JLabel("hi"); 
label6.setVisible(false); 
pan.add(label6); 
JButton button7= new JButton("7"); 
pan.add(button7); 
final JLabel label7= new JLabel("hi"); 
label7.setVisible(false); 
pan.add(label7); 
JButton button8= new JButton("8"); 
pan.add(button8); 
final JLabel label8= new JLabel("howdy"); 
label8.setVisible(false); 
pan.add(label8); 
JButton button9= new JButton("9"); 
pan.add(button9); 

final JLabel label9= new JLabel("hi"); 
label9.setVisible(false); 
pan.add(label9); 
JLabel l=new JLabel("grid layout"); 
l.setHorizontalAlignment(SwingConstants.CENTER); 
button1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label1.setVisible(true); 
    } 
}); 
button2.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label2.setVisible(true); 
    } 
}); 
button3.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label3.setVisible(true); 
    } 
}); 
button4.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label4.setVisible(true); 
    } 
}); 
button5.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label5.setVisible(true); 
    } 
}); 
button6.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label6.setVisible(true); 
    } 
}); 
button7.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label7.setVisible(true); 
    } 
}); 
button8.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label8.setVisible(true); 
    } 
}); 
button9.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     label9.setVisible(true); 

    } 
}); 


if (button1.isEnabled()){ 
Graphics g= pan.getGraphics(); 
g.setColor(new Color(156, 93, 82)); 
g.fill3DRect(21,3,7,12, true); 
g.setColor(new Color(156,23,134)); 
g.fillOval(1,15,15,15); 
g.fillOval(16,15,15,15); 
g.fillOval(31,15,15,15); 
g.fillOval(7,31,15,15); 
g.fillOval(22,31,15,15); 
g.fillOval(16,47,15,15); 


}} 


} 
+2

Для получения более точной информации о начале [SSCCE] (http://sscce.org/) – Reimeus

+0

Ваш код не работает. Ну, он работает, но он не отображает GUI, и это действительно не имеет смысла. Весь ваш код - один большой статический основной метод. Какой графический интерфейс вы могли бы рисовать по статическому основному методу? Как насчет публикации действующей программы * small * example, которая фактически запускается и отображает графический интерфейс? –

ответ

3

Если это приложение Качели, то вы должны либо рисуйте в BufferedImage, и в этом случае вы получите объект Graphics BufferImage через getGraphics(), или вы будете делать этот чертеж в методе JPANEL paintComponent(Graphics g) и будете использовать объект Graphics, переданный в этот метод JVM.

Чтобы связать это с JButton с включенным или нет, я бы добавил ChangeListener к модели кнопки и вызвал перерисовку, если включенное свойство изменилось, а затем будет иметь блок if в методе и базе данных paintanomponent JPanel рисовать ли фигуры в разрешенном состоянии кнопки.

Для получения более подробной информации ознакомьтесь с размещением sscce.

Смежные вопросы