Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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
如何从函数返回JButton并使用它在java中的不同类中执行操作?_Java_Swing_Jframe_Jbutton - Fatal编程技术网

如何从函数返回JButton并使用它在java中的不同类中执行操作?

如何从函数返回JButton并使用它在java中的不同类中执行操作?,java,swing,jframe,jbutton,Java,Swing,Jframe,Jbutton,我如何从函数返回一个JButton并使用它在另一个类中执行操作,我创建一个库只是为了练习我的java技能(我缺少这一部分),我试图通过创建对象和函数来处理它,使创建JFrames和JButton变得更简单,问题是,在Frame.java上,我返回在那里创建的JButton,然后将其与ActionListener一起使用,但问题是,它既不显示错误,也不起作用,是否有人能给我解释一下,如果可能的话,提供一个解决方案 Ctrl+F:9812934|从返回按钮和使用按钮的位置切换 Main.java p

我如何从函数返回一个JButton并使用它在另一个类中执行操作,我创建一个库只是为了练习我的java技能(我缺少这一部分),我试图通过创建对象和函数来处理它,使创建JFrames和JButton变得更简单,问题是,在Frame.java上,我返回在那里创建的JButton,然后将其与
ActionListener
一起使用,但问题是,它既不显示错误,也不起作用,是否有人能给我解释一下,如果可能的话,提供一个解决方案

Ctrl+F:
9812934
|从返回按钮和使用按钮的位置切换

Main.java

package twopackages;

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


import lib.Button;
import lib.Frame;

public class Main extends Frame{
    public static void main(String[] args ){

        Frame frame = new Frame();
        Button button = new Button();

        frame.width = 400;
        frame.height = 300;
        frame.title = "title";
        frame.visible = true;

        button.width = 100;
        button.height = 30;
        button.title = "button";
        button.top = 10;
        button.left = 10;
        button.visible = true;

        frame.addButton(button);

        frame.run();

        frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("sadasdasd");
            }
        });


    }

}
package lib;

import javax.swing.JButton;
import javax.swing.JFrame;

import lib.Button;

public class Frame {
    public int width;
    public int height;
    public String title;
    public boolean visible;

    JFrame FRAME = new JFrame();

    public void run(){
        FRAME.setSize(width, height);
        FRAME.setTitle(title);
        FRAME.setLayout(null);
        FRAME.setLocationRelativeTo(null);
        FRAME.setVisible(visible);
        FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FRAME.setResizable(false);
    }

    public JButton addButton(Button button){
        JButton BUTTON = new JButton();
        BUTTON.setText(button.title);
        BUTTON.setBounds(button.left, button.top, button.width, button.height);
        BUTTON.setVisible(button.visible);
        FRAME.add(BUTTON);
        return BUTTON;//Here's where I return the JButton 9812934
    }

}
package lib;

import javax.swing.JButton;

public class Button{

    public int left;
    public int top;
    public int width;
    public int height;
    public String title;
    public boolean visible;

    JButton button = new JButton();

    public void button(){
        button.setBounds(left, top, width, height);
        button.setText(title);
        button.setVisible(visible);
    }
}
Frame.java

package twopackages;

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


import lib.Button;
import lib.Frame;

public class Main extends Frame{
    public static void main(String[] args ){

        Frame frame = new Frame();
        Button button = new Button();

        frame.width = 400;
        frame.height = 300;
        frame.title = "title";
        frame.visible = true;

        button.width = 100;
        button.height = 30;
        button.title = "button";
        button.top = 10;
        button.left = 10;
        button.visible = true;

        frame.addButton(button);

        frame.run();

        frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("sadasdasd");
            }
        });


    }

}
package lib;

import javax.swing.JButton;
import javax.swing.JFrame;

import lib.Button;

public class Frame {
    public int width;
    public int height;
    public String title;
    public boolean visible;

    JFrame FRAME = new JFrame();

    public void run(){
        FRAME.setSize(width, height);
        FRAME.setTitle(title);
        FRAME.setLayout(null);
        FRAME.setLocationRelativeTo(null);
        FRAME.setVisible(visible);
        FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FRAME.setResizable(false);
    }

    public JButton addButton(Button button){
        JButton BUTTON = new JButton();
        BUTTON.setText(button.title);
        BUTTON.setBounds(button.left, button.top, button.width, button.height);
        BUTTON.setVisible(button.visible);
        FRAME.add(BUTTON);
        return BUTTON;//Here's where I return the JButton 9812934
    }

}
package lib;

import javax.swing.JButton;

public class Button{

    public int left;
    public int top;
    public int width;
    public int height;
    public String title;
    public boolean visible;

    JButton button = new JButton();

    public void button(){
        button.setBounds(left, top, width, height);
        button.setText(title);
        button.setVisible(visible);
    }
}
Button.java

package twopackages;

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


import lib.Button;
import lib.Frame;

public class Main extends Frame{
    public static void main(String[] args ){

        Frame frame = new Frame();
        Button button = new Button();

        frame.width = 400;
        frame.height = 300;
        frame.title = "title";
        frame.visible = true;

        button.width = 100;
        button.height = 30;
        button.title = "button";
        button.top = 10;
        button.left = 10;
        button.visible = true;

        frame.addButton(button);

        frame.run();

        frame.addButton(button).addActionListener(new ActionListener() {//Get JButton returned after calling function (I know it's crappy, but I could not find a way to do something similar) 9812934
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("sadasdasd");
            }
        });


    }

}
package lib;

import javax.swing.JButton;
import javax.swing.JFrame;

import lib.Button;

public class Frame {
    public int width;
    public int height;
    public String title;
    public boolean visible;

    JFrame FRAME = new JFrame();

    public void run(){
        FRAME.setSize(width, height);
        FRAME.setTitle(title);
        FRAME.setLayout(null);
        FRAME.setLocationRelativeTo(null);
        FRAME.setVisible(visible);
        FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        FRAME.setResizable(false);
    }

    public JButton addButton(Button button){
        JButton BUTTON = new JButton();
        BUTTON.setText(button.title);
        BUTTON.setBounds(button.left, button.top, button.width, button.height);
        BUTTON.setVisible(button.visible);
        FRAME.add(BUTTON);
        return BUTTON;//Here's where I return the JButton 9812934
    }

}
package lib;

import javax.swing.JButton;

public class Button{

    public int left;
    public int top;
    public int width;
    public int height;
    public String title;
    public boolean visible;

    JButton button = new JButton();

    public void button(){
        button.setBounds(left, top, width, height);
        button.setText(title);
        button.setVisible(visible);
    }
}

您应该将按钮添加到框架的contentPane中,而不是添加到自己的框架中。始终建议在面板级别而不是swing中的框架上工作

您应该将按钮添加到框架的内容窗格中,而不是添加到自己的框架中。总是建议在面板级别而不是swing中的框架上工作,因为您创建了一个
JButton
的两个实例,并将它们相互叠加,这正是@Andrew在其评论中警告您的。当您单击该按钮时,实际上是在单击未附加操作侦听器实现的按钮

以下是相关位:


//frame.addButton(按钮);// 您的代码不起作用,因为您创建了一个
JButton
的两个实例,并将它们相互叠加,这正是@Andrew在其评论中警告您的。当您单击该按钮时,实际上是在单击未附加操作侦听器实现的按钮

以下是相关位:


//frame.addButton(按钮);//1) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 请学习常见的Java命名法(命名约定-例如,
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是一个
大写常量
),并一致地使用它。1)Java GUI必须在不同的操作系统上工作,屏幕大小,屏幕分辨率等。在不同地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。2) 请学习常见的Java命名法(命名约定-例如,
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是一个
大写常量
),并一致地使用它。哦,这是完全正确的,我现在看到了,它是有效的,感谢您的解释和建议+1哦,这是完全正确的,我现在明白了,它起作用了,感谢您的解释和建议+1