首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用按钮打开不同的框架

在Java中使用按钮打开不同的框架
EN

Stack Overflow用户
提问于 2014-12-23 03:26:00
回答 1查看 58关注 0票数 0

我正在尝试使用主框架上的按钮打开菜单框架。我向按钮添加了一个事件,并尝试调用另一个类,但它总是给我一个错误"::expected this token“

这是我的主框架

代码语言:javascript
复制
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;

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


public class Main extends JFrame {

public static JPanel mainPane;
public final JButton menuButton = new JButton("New button");

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Main frame = new Main();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Main() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    mainPane = new JPanel();
    mainPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(mainPane);
    mainPane.setLayout(null);
    menuButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Menu.main(String[] args);
        }
    });
    menuButton.setBounds(76, 89, 104, 32);
    mainPane.add(menuButton);
}
}

这是我的菜单框

代码语言:javascript
复制
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;


public class Menu extends JFrame {

public static JPanel menuPane;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Menu frame = new Menu();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Menu() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    menuPane = new JPanel();
    menuPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(menuPane);
    menuPane.setLayout(null);

    JLabel menuTitle = new JLabel("Menu");
    menuTitle.setBounds(194, 11, 46, 14);
    menuPane.add(menuTitle);

}
}
EN

回答 1

Stack Overflow用户

发布于 2014-12-23 03:30:39

将您的操作事件更改为this.no,需要调用main方法.create一个新的Menu类实例。

代码语言:javascript
复制
 menuButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Menu menu = new Menu();
            menu.setVisible(true);
        }
    });

如果您确实想调用main方法,那么可以使用

代码语言:javascript
复制
menuButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
           Menu.main(new String[0]);
        }
    });

错误在这里

代码语言:javascript
复制
Menu.main(String[] args);//error

这不是将参数传递给methods.this is参数列表声明的正确方式。

您可以通过将其更改为,

代码语言:javascript
复制
String args[] = null;
Menu.main(args);    //correct
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27609155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档