在尝试编写功能之前,我正在尝试让我的基本GUI工作并设置导航。基本上我有一个工作的登录表单,并在用户正确输入登录详细信息时打开我的菜单页面。我点击Jbutton时打开AddProperty
页面(这个新页面应该打开,菜单页面关闭)。我一直在使用 Head First Java 一书来尝试完成这项任务。
当我点击Jbutton时,没有任何反应。这可能与我的代码结构有关,因为我是初学者,只是想让自己熟悉代码。谢谢你的期待!
这是菜单页面(NavigationMenu.java
):
/*
* NavigationMenu.java
*
* Created on 18 May 2011, 12:56
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package Login;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Graeme Pearson
*/
public class NavigationMenu {
/** Creates a new instance of NavigationMenu */
public void NavigationMenu()
{
JFrame menu = new JFrame("menuframe");
menu.setVisible(true);
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
menu.setSize(180,240);
menu.add(panel);
menu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton AddProperty = new JButton("Add A Property");
panel.add(AddProperty);
//AddProperty gui = new AddProperty();
//gui.AddProperty();
JButton CreateNewAccount = new JButton("Create New Account");
panel.add(CreateNewAccount);
JButton SearchProperty = new JButton("Search Property");
panel.add(SearchProperty);
JButton ViewPropertyDetails = new JButton("View Property");
panel.add(ViewPropertyDetails);
JButton Logout = new JButton("Logout");
panel.add(Logout);
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand().equals("Add A Property"))
{
AddProperty gui = new AddProperty();
gui.AddProperty();
}
//the user pressed "Add A Property"; do something
}
}
以下是AddProperty.java
的内容:
/**
*
* @author Graeme
*/
package Login;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.EmptyBorder;
public class AddProperty
{
public void AddProperty()
{
JFrame frame = new JFrame("AddPropertyFrame");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// having to set sizes of components is rare, and often a sign
// of problems with layouts.
//frame.setSize(800,600);
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20,20));
// make it big like the original
panel.setBorder(new EmptyBorder(100,20,100,20));
frame.add(panel);
//panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JLabel HouseNumber = new JLabel("A");
panel.add(HouseNumber);
JTextField HouseNumber1 = new JTextField(10);
panel.add(HouseNumber1);
JLabel HousePrice = new JLabel("B");
panel.add(HousePrice);
JTextField HousePrice1 = new JTextField(10);
panel.add(HousePrice1);
JLabel HouseType = new JLabel("C");
panel.add(HouseType);
JTextField HouseType1 = new JTextField(5);
panel.add(HouseType1);
JButton submit = new JButton("Submit");
panel.add(submit);
submit.addActionListener(new Action());
// tell the GUI to assume its natural (minimum) size.
frame.pack();
}
static class Action implements ActionListener{
@Override
public void actionPerformed (ActionEvent e)
{
// this should probably be a modal JDialog or JOptionPane.
JFrame frame2 = new JFrame("Submitted");
frame2.setVisible(true);
frame2.setSize(200,200);
JLabel label = new JLabel("You Have Submitted a New Property");
JPanel panel = new JPanel();
frame2.add(panel);
panel.add(label);
}
}
}
答案 0 :(得分:1)
首先,错误地定义了NavigationMenu菜单的构造函数。
它不应该返回无效。构造函数不返回值
public NavigationMenu()
{
etc...
}
与AddProperty类相同
现在看着其余的。 :)修复你需要为按钮分配动作监听器的其余部分
AddProperty.addActionListener(this);
并且NavigationMenu必须实现ActionListener接口。即。
public class NavigationMenu
implements ActionListener
答案 1 :(得分:1)
应该是
public class NavigationMenu implements ActionListener{
您应该将监听器添加到按钮:
AddProperty.addActionListener(this);