java事件监听器直接写函数,开始Java:通过事件监听器传递给构造函数

所以,我想要完成的是将GUI Data发送给构造函数以设置一些新实例。但我不太确定如何实现这一点。我真的不知道我所做的事情是否允许,但如果只是这样工作的话,这很容易。

你可以看到我设置了一个GUI。然后,当用户点击显示时,我希望程序收集数据。然后将其发送给构造函数。

现在,这是一个学校项目,所以我不能要求完整的答案(代码),但希望有人能帮助我更好地理解我做错了什么。我得到的编译器错误是 - 返回类型无效 - 但我知道返回类型匹配... o-o;

我会提供您需要的任何其他信息。如果我可以稍微修改一下这些代码,以便让编译器更容易,就好像我在做整个构造函数的事情是错误的,让我知道。无论如何我都希望有更好的习惯。

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Project2 extends JFrame {

//Instance Variables

private String sid;

private double length;

private boolean widths;

private String service;

//Declaring GUI Components

private JTextField jtfSSID;

private JTextField jtfLength;

private JTextArea jtaToString;

private JLabel jlblTitle;

private JLabel jlblSSID;

private JLabel jlblLength;

private JLabel jlblToString;

private JButton jbtDisplay;

private JButton jbtClear;

private JRadioButton jrbServiceStand;

private JRadioButton jrbServiceSuper;

private JRadioButton jrbServiceDelux;

private ButtonGroup bgService;

private JCheckBox jcbWStand;

private JCheckBox jcbWExtra;

private JPanel tpanel;

private JPanel ipanel;

private JPanel wpanel;

private JPanel spanel;

private JPanel opanel;

private final int WIDTH = 500;

private final int HEIGHT = 200;

//main method for inst and cust frame

public static void main(String[] args){

Project2 frame = new Project2();

}

//Constructors + GUI constructs

public Project2(){

setTitle("Project 2 : Bahia Mar Marina");

setSize(WIDTH, HEIGHT);

setLocation(300, 200);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setLayout(new BorderLayout());

buildTitle();

buildIdentity();

buildWidth();

buildService();

buildOutput();

add( tpanel, BorderLayout.NORTH );

add( ipanel, BorderLayout.WEST);

add( wpanel, BorderLayout.CENTER );

add( spanel, BorderLayout.EAST);

add( opanel, BorderLayout.SOUTH );

setVisible(true);

}

public Project2(String newSid, double newLength, boolean newWidths, String newService){

setSid(newSid);

setLength(newLength);

isWidths(newWidths);

setService(newService);

}

//-----------------------------setters

public void setSid(String newSid){

sid = newSid;

}

public void setLength(double newLength){

if (length <= 20 && length >= 60 || length == 0) {

length = newLength;

}

else {

JOptionPane.showMessageDialog(null, "Invalid Length! Between 20 - 60 please! Or 0 as a placeholder.");

}

}

public void isWidths(boolean newWidths){

widths = newWidths;

}

public void setService(String newService){

service = newService;

}

//-----------------------------------getters

public String getSid(){

return sid;

}

public double getLength(){

return length;

}

public boolean getWidths(){

return widths;

}

public String getService(){

return service;

}

//---------------------------------------to string

public String toString( ){

String output = "Slip ID: " + sid + " length of " + length + "ft. Wide: " + widths + ".\n-----Service Type: " + service;

return output;

}

//build top title

private void buildTitle(){

tpanel = new JPanel();

jlblTitle = new JLabel("Bahia Mar Marina");

tpanel.add(jlblTitle);

}

//build left ID

private void buildIdentity(){

ipanel = new JPanel();

ipanel.setLayout(new GridLayout (2,1));

jlblSSID = new JLabel("SSID: ");

jlblLength = new JLabel("Length: ");

jtfSSID = new JTextField(4);

jtfLength = new JTextField(4);

ipanel.setBorder(BorderFactory.createTitledBorder("Identity:"));

ipanel.add(jlblSSID);

ipanel.add(jtfSSID);

ipanel.add(jlblLength);

ipanel.add(jtfLength);

}

//build center width

private void buildWidth(){

wpanel = new JPanel();

wpanel.setLayout(new GridLayout (1,2));

jcbWStand = new JCheckBox("Standard");

jcbWExtra = new JCheckBox("Extra-wide");

wpanel.setBorder(BorderFactory.createTitledBorder("Width:"));

wpanel.add(jcbWStand);

wpanel.add(jcbWExtra);

}

//build left service

private void buildService(){

spanel = new JPanel();

spanel.setLayout(new GridLayout (3,1));

jrbServiceStand = new JRadioButton("Standard");

jrbServiceSuper = new JRadioButton("Superior");

jrbServiceDelux = new JRadioButton("Deluxe");

bgService = new ButtonGroup();

bgService.add(jrbServiceStand);

bgService.add(jrbServiceSuper);

bgService.add(jrbServiceDelux);

spanel.setBorder(BorderFactory.createTitledBorder("Service:"));

spanel.add(jrbServiceStand);

spanel.add(jrbServiceSuper);

spanel.add(jrbServiceDelux);

}

//build bottom output and buttons

private void buildOutput(){

opanel = new JPanel();

opanel.setLayout(new GridLayout (2,1));

jlblToString = new JLabel("Data Output:");

jtaToString = new JTextArea(2,16);

jbtDisplay = new JButton("Display!");

jbtDisplay.addActionListener(new DisplayButtonListener());

jbtClear = new JButton("-");

jbtClear.addActionListener(new ClearButtonListener());

opanel.add(jbtDisplay);

opanel.add(jbtClear);

opanel.add(jlblToString);

opanel.add(jtaToString);

}

//Display Listener

private class DisplayButtonListener implements ActionListener{

public void actionPerformed(ActionEvent e){

sid = jtfSSID.getText();

length = Double.parseDouble(jtfLength.getText());

//service

if(jrbServiceStand.isSelected()){

service = "Standard";}

else if(jrbServiceSuper.isSelected()){

service = "Superior";}

else if(jrbServiceDelux.isSelected()){

service = "Deluxe";}

//widths

if(jcbWStand.isSelected()){

widths = false;

}

if(jcbWExtra.isSelected()){

widths = true;

}

Project2(sid, length, widths, service);

}

}

//Clear Listener

private class ClearButtonListener implements ActionListener{

public void actionPerformed(ActionEvent e){

jtfSSID.setText(" ");

bgService.clearSelection();

jtfLength.setText(" ");

jcbWStand.setSelected(false);

jcbWExtra.setSelected(false);

}

}}所以,只是为了具体,并确保...这是错误的代码:

//Display Listener

private class DisplayButtonListener implements ActionListener{

public void actionPerformed(ActionEvent e){

sid = jtfSSID.getText();

length = Double.parseDouble(jtfLength.getText());

//service

if(jrbServiceStand.isSelected()){

service = "Standard";}

else if(jrbServiceSuper.isSelected()){

service = "Superior";}

else if(jrbServiceDelux.isSelected()){

service = "Deluxe";}

//widths

if(jcbWStand.isSelected()){

widths = false;

}

if(jcbWExtra.isSelected()){

widths = true;

}

Project2(sid, length, widths, service); //THIS LINE HAS THE ERROR

}我想把它传递给:

public Project2(String newSid, double newLength, boolean newWidths, String newService){

setSid(newSid);

setLength(newLength);

isWidths(newWidths);

setService(newService);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值