Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与actionListener静态类冲突_Java_Swing_Graphics_Jbutton - Fatal编程技术网

Java 与actionListener静态类冲突

Java 与actionListener静态类冲突,java,swing,graphics,jbutton,Java,Swing,Graphics,Jbutton,我在找方向。我想要一个按钮,以权力的东西是画在图形内容。我以前在jframes和侦听器中使用过按钮。但不知何故,听众没有被接受。我确信这与声明的两个类有关。谁能告诉我是什么问题或冲突 我不能使用//f.addWindowListener(这个); //b、 addActionListener(此); 它标记错误,这就是为什么它们被写为注释= import java.awt.*; import javax.swing.*; import java.awt.event.*; /* implemen

我在找方向。我想要一个按钮,以权力的东西是画在图形内容。我以前在jframes和侦听器中使用过按钮。但不知何故,听众没有被接受。我确信这与声明的两个类有关。谁能告诉我是什么问题或冲突

我不能使用//f.addWindowListener(这个); //b、 addActionListener(此); 它标记错误,这就是为什么它们被写为注释=

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

/* implements ActionListener*/
class JFramePaint1 extends JFrame implements ActionListener {

    public static int activa = 0;
    public static JButton b = new JButton("b");

    public static void main(String[] a) {

        JFrame f = new JFrame();
        f.setTitle("Drawing Graphics in Frames");
        f.setSize(800, 650);
        f.setLocation(200, 50);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setContentPane(new ContentComponent());
        f.getContentPane().add(b);

        //f.addWindowListener(this);
        //b.addActionListener(this);

        f.setVisible(true);
    }

    static class ContentComponent extends JPanel {

        public void paint(Graphics g) {
            g.setColor(Color.RED);
            g.fillRect(0, 40, 800, 650);
            if (activa == 1) {

                g.setColor(Color.BLACK);
                g.drawRect(40, 40, 150, 80);
                int x = 40;
                int y = 40;
                for (int i = 0; i < 4; i++) {

                    g.drawRect(x + 10, y + 10, 150, 80);
                    x = x + 10;
                    y = y + 10;
                }
            }
        }//del paint
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == b) {
            System.out.println("entro");
        }
    }

    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }

    public void windowOpened(WindowEvent e) {}

    public void windowClosed(WindowEvent e) {}

    public void windowActivated(WindowEvent e) {}

    public void windowDeactivated(WindowEvent e) {}

    public void windowIconified(WindowEvent e) {}

    public void windowDeiconified(WindowEvent e) {}
}
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
/*实现ActionListener*/
类JFramePaint1扩展了JFrame实现ActionListener{
公共静态int activa=0;
公共静态JButton b=新JButton(“b”);
公共静态void main(字符串[]a){
JFrame f=新的JFrame();
f、 setTitle(“在框架中绘制图形”);
f、 设置大小(800650);
f、 设定位置(200,50);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 setContentPane(新ContentComponent());
f、 getContentPane()。添加(b);
//f、 addWindowListener(此);
//b、 addActionListener(此);
f、 setVisible(真);
}
静态类ContentComponent扩展了JPanel{
公共空间涂料(图g){
g、 setColor(Color.RED);
g、 fillRect(0,40,800,650);
如果(activa==1){
g、 设置颜色(颜色为黑色);
g、 drawRect(40,40,150,80);
int x=40;
int y=40;
对于(int i=0;i<4;i++){
g、 drawRect(x+10,y+10150,80);
x=x+10;
y=y+10;
}
}
}//德尔油漆
}
已执行的公共无效操作(操作事件e){
如果(例如getSource()==b){
系统输出打印项次(“entro”);
}
}
公共无效窗口关闭(WindowEvent e){
系统出口(0);
}
公共无效窗口已打开(WindowEvent e){}
公共无效windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
公共无效WindowIconnified(WindowEvent e){}
公共无效WindowDeconified(WindowEvent e){}
}
您不能使用

  //f.addWindowListener(this);
  //b.addActionListener(this);
因为您使用的是静态方法。你希望这个指向什么?

你不能使用

  //f.addWindowListener(this);
  //b.addActionListener(this);

因为您使用的是静态方法。您希望这篇文章指向什么?

您可能会发现将main()中的所有代码移到构造函数中更容易。Fwiw,我也不知道为什么要扩展JFrame,还要在主方法中创建一个新的JFrame实例。我想你想要这样的东西(我还没有测试过,但这只是一般的想法)

FWIW,您可能想阅读一本好的Java语言教程,以正确理解“静态”的含义

import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
/*实现ActionListener*/
类JFramePaint1扩展了JFrame实现ActionListener{
私人int activa=0;
私有JButton b=新JButton(“b”);
J1(){
setTitle(“在框架中绘制图形”);
设置大小(800650);
设定位置(200,50);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(新ContentComponent());
getContentPane()。添加(b);
addWindowListener(此);
addActionListener(此);
}
公共静态void main(字符串[]a){
新JFramePaint1().setVisible(true);
}
类ContentComponent扩展了JPanel{
公共空间涂料(图g){
g、 setColor(Color.RED);
g、 fillRect(0,40,800,650);
如果(activa==1){
g、 设置颜色(颜色为黑色);
g、 drawRect(40,40,150,80);
int x=40;
int y=40;
对于(int i=0;i<4;i++){
g、 drawRect(x+10,y+10150,80);
x=x+10;
y=y+10;
}
}
}//德尔油漆
}
已执行的公共无效操作(操作事件e){
如果(例如getSource()==b){
系统输出打印项次(“entro”);
}
}
公共无效窗口关闭(WindowEvent e){
系统出口(0);
}
公共无效窗口已打开(WindowEvent e){}
公共无效windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
公共无效WindowIconnified(WindowEvent e){}
公共无效WindowDeconified(WindowEvent e){}
}

您可能会发现将main()中的所有代码移动到构造函数中更容易。Fwiw,我也不知道为什么要扩展JFrame,还要在主方法中创建一个新的JFrame实例。我想你想要这样的东西(我还没有测试过,但这只是一般的想法)

FWIW,您可能想阅读一本好的Java语言教程,以正确理解“静态”的含义

import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
/*实现ActionListener*/
类JFramePaint1扩展了JFrame实现ActionListener{
私人int activa=0;
私有JButton b=新JButton(“b”);
J1(){
setTitle(“在框架中绘制图形”);
设置大小(800650);
设定位置(200,50);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(新ContentComponent());
getContentPane()。添加(b);
addWindowListener(此);
addActionListener(此);
}
公共静态void main(字符串[]a){
新JFramePaint1().setVisible(true);
}
类ContentComponent扩展了JPanel{
公共空间涂料(图g){
g、 setColor(Color.RED);
g、 fillRect(0,40,800,650);
如果(activa==1){
g、 设置颜色(颜色为黑色);
g、 drawRect(40,40