Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 向JButtons添加操作事件_Java_Eclipse_User Interface - Fatal编程技术网

Java 向JButtons添加操作事件

Java 向JButtons添加操作事件,java,eclipse,user-interface,Java,Eclipse,User Interface,昨天我遇到了一个问题,我的代码被嵌套并且有太多的静态类。我已经清理了代码,现在正试图向JButtons添加一个动作侦听器。我在GUI上有5个不同的按钮,配置文件、市场、用户、注释、信息。每个按钮都是GUI上的一个按钮。用户将能够单击其中一个jb按钮,例如“Profile”,它将打开另一个GUI“我在eclipse中写这篇文章。”“我也没有使用GUI生成器。”我制作了另一个GUI,单击其中一个按钮时将打开: public void actionPerformed (ActionEvent e) {

昨天我遇到了一个问题,我的代码被嵌套并且有太多的静态类。我已经清理了代码,现在正试图向JButtons添加一个动作侦听器。我在GUI上有5个不同的按钮,配置文件、市场、用户、注释、信息。每个按钮都是GUI上的一个按钮。用户将能够单击其中一个jb按钮,例如“Profile”,它将打开另一个GUI“我在eclipse中写这篇文章。”“我也没有使用GUI生成器。”我制作了另一个GUI,单击其中一个按钮时将打开:

public void actionPerformed (ActionEvent e) {
    JFrame frame2 = new JFrame("Your Stocks");
    frame2.setVisible(true);
    frame2.setSize(600,600);
    JLabel label = new JLabel("Your Personal Stocks");
    JPanel panel = new JPanel();
    frame2.add(panel);
    panel.add(label);   
}
我就是不知道如何将它添加到每个JButton。如果有人能给出一个可视化的想法或链接,说明如何将上面的GUI添加到所有JButton中,那将非常感谢。以下是我的所有JButton和GUI ActionEvent的代码:

import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Stocks {

public static void main(String [] args) {

    JFrame frame = new JFrame ("Java Stocks");
    frame.setSize(700,700);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new JPanel (new GridBagLayout());
    frame.add(panel);
    frame.getContentPane().add(panel, BorderLayout.WEST);
    GridBagConstraints c = new GridBagConstraints ();

    JButton button1 = new JButton("Profile");
    c.gridx = 0;
    c.gridy = 0;
    c.insets = new Insets(40, 40, 40, 40);
    panel.add(button1, c);
    button1.addActionListener(new Action());

    JButton button2 = new JButton("Market");
    c.gridx = 0;
    c.gridy = 1;
    panel.add(button2, c);  
    button2.addActionListener(new Action());

    JButton button3 = new JButton("Users");
    c.gridx = 0;
    c.gridy = 2;
    panel.add(button3, c);
    button3.addActionListener(new Action());

    JButton button4 = new JButton("Notes");
    c.gridx = 0;
    c.gridy = 3;
    panel.add(button4, c);
    button4.addActionListener(new Action());

    JButton button5 = new JButton("Information");
    c.gridx = 0;
    c.gridy = 4;
    panel.add(button5, c);
    button5.addActionListener(new Action());
}

public void actionPerformed (ActionEvent e) {
    JFrame frame2 = new JFrame("Your Stocks");
    frame2.setVisible(true);
    frame2.setSize(600,600);
    JLabel label = new JLabel("Your Personal Stocks");
    JPanel panel = new JPanel();
    frame2.add(panel);
    panel.add(label);   
}
}

这是按钮的图片。用户将能够单击其中一个按钮,它将打开一个新的GUI

据我所知,当您单击这些按钮时,您希望打开一个新的
JFrame
。如果是,则进行以下两项更改:

首先:在
Stock
类中实现
ActionListener
接口

public class Stock implements ActionListener {
    //Rest of the code...
}
第二:在
addActionListener
方法中为每个按钮传递
this
关键字:

button1.addActionListener(this);
button2.addActionListener(this);
....
而且,我几乎忘记了必须回答的问题:

编辑: 好了,整个解决方案(如果没有帮助,我放弃):


据我所知,当您单击这些按钮时,您希望打开一个新的
JFrame
。如果是,则进行以下两项更改:

首先:在
Stock
类中实现
ActionListener
接口

public class Stock implements ActionListener {
    //Rest of the code...
}
第二:在
addActionListener
方法中为每个按钮传递
this
关键字:

button1.addActionListener(this);
button2.addActionListener(this);
....
而且,我几乎忘记了必须回答的问题:

编辑: 好了,整个解决方案(如果没有帮助,我放弃):


有没有什么方法可以修复我现在的代码,而不必重做几乎所有的代码?等等。。。当你点击/按下这些按钮时,你想打开一个新的
JFrame
吗?当我运行程序时,我会添加一张显示所有按钮的图片。+1,
还有什么方法可以修复我现在的代码,而不必几乎全部重做吗?
现在没有时间进行更改了。另一种选择是使用,而不是一直创建新的JDialogs(不要创建JFrames);它说我不能在静态环境中使用它。我是否可以修复我现在的代码,而不必重做几乎所有的代码?等等。。。当你点击/按下这些按钮时,你想打开一个新的
JFrame
吗?当我运行程序时,我会添加一张显示所有按钮的图片。+1,
还有什么方法可以修复我现在的代码,而不必几乎全部重做吗?
现在没有时间进行更改了。另一种选择是使用,而不是一直创建新的JDialogs(不要创建JFrames);它说我不能在静态上下文中使用它。