java不能引用非final变量
发布时间:2020-12-15 04:57:52 所属栏目:Java 来源:网络整理
导读:以下代码继续给我: Cannot refer to a non-final variable textBoxPassword inside an inner class defined in a different method Login.java /ChurchWebLogin/src/com/gwt/churchweb/churchweblogin/client line 61 package com.gwt.churchweb.churchwebl
以下代码继续给我:
package com.gwt.churchweb.churchweblogin.client; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.FlexTable; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.HasHorizontalAlignment; import com.google.gwt.user.client.ui.CheckBox; import com.google.gwt.user.client.ui.Button; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.user.client.Window; public class Login extends Composite { public Login() { VerticalPanel verticalPanel = new VerticalPanel(); initWidget(verticalPanel); verticalPanel.setSize("329px","186px"); Label lblNewLabel = new Label("Sign into your account"); lblNewLabel.setStyleName("gwt-Login-SigninLabel"); verticalPanel.add(lblNewLabel); FlexTable flexTable = new FlexTable(); verticalPanel.add(flexTable); flexTable.setWidth("308px"); Label lblNewLabel_1 = new Label("Username:"); lblNewLabel_1.setStyleName("gwt-Label-Login"); flexTable.setWidget(0,lblNewLabel_1); lblNewLabel_1.setWidth("72px"); TextBox textboxUsername = new TextBox(); textboxUsername.setStyleName("gwt-LoginTextBox"); flexTable.setWidget(0,1,textboxUsername); textboxUsername.setWidth("204px"); Label lblNewLabel_2 = new Label("Password:"); lblNewLabel_2.setStyleName("gwt-Label-Login"); flexTable.setWidget(1,lblNewLabel_2); lblNewLabel_2.setWidth("66px"); TextBox textBoxPassword = new TextBox(); textBoxPassword.setStyleName("gwt-LoginTextBox"); flexTable.setWidget(1,textBoxPassword); textBoxPassword.setWidth("204px"); flexTable.getCellFormatter().setHorizontalAlignment(0,HasHorizontalAlignment.ALIGN_LEFT); flexTable.getCellFormatter().setHorizontalAlignment(1,HasHorizontalAlignment.ALIGN_LEFT); CheckBox chckbxRememberMeOn = new CheckBox("Remember me on this computer"); chckbxRememberMeOn.setStyleName("gwt-Checkbox-Login"); flexTable.setWidget(2,chckbxRememberMeOn); Button btnSignIn = new Button("Sign In"); btnSignIn.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { if (textboxUsername.getText().length() == 0 || textBoxPassword.getText().length() == 0) { Window.alert("Username or password is empty."); } } }); btnSignIn.setStyleName("gwt-Login-SigninButton"); flexTable.setWidget(3,btnSignIn); } } 解决方法final TextBox textboxUsername = new TextBox(); 和 final TextBox textBoxPassword = new TextBox(); 应该解决它. Java要求将内部类中的变量引用为最终变量(出于并发管理的原因,我想). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |