-3

コードのこの部分がありますが、初期化されず、その方法がわかりません。Exception in thread "main" java.lang.NullPointerException at 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);


}}


}
4

1 に答える 1

3

これが Swing アプリケーションの場合、BufferedImage に描画する必要があります。この場合、 を介して BufferedImage の Graphics オブジェクトを取得するgetGraphics()か、JPanel のpaintComponent(Graphics g)メソッドでこの描画を行い、渡された Graphics オブジェクトを使用します。 JVMによるメソッド。

これを JButton が有効になっているかどうかに結び付けるには、ボタンのモデルに ChangeListener を追加し、有効なプロパティが変更された場合は再描画を呼び出します。次に、JPanel の paintComponent メソッドに if ブロックを配置し、再描画するかどうかを決定します。ボタンの有効な状態で形状をペイントします。

より詳細なヘルプについては、sscceへの投稿を検討してください。

于 2013-10-02T01:36:37.463 に答える