最近对javaFx特别感兴趣,闲暇时对着官方文档及GOOGLE学习
没有太详细的解说,但在代码中有还算较明白的注释
示例使用JDK7,开发工具为eclipse和e(rx)clipse插件
效果如下图
下面是代码
程序的入口
LoginWidthCss.class
package com.wei.table;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.wei.jdbc.JdbcUtil;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
* 登陆首页面
* @author wangwei
*
*/
public class LoginWidthCss extends Application {
private Connection conn;
private PreparedStatement ps;
private ResultSet rs;
private GridPane grid;
public static void main(String[] args) {
launch(args );
}
@Override
public void start(final Stage primaryStage) throws Exception {
//窗口标题
primaryStage.setTitle("JavaFX 登陆");
//设置面板及布局
grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25));
//文本框
Text scenetitle = new Text("Welcome");
scenetitle.setId("welcome-text");
grid.add(scenetitle, 0, 0, 2, 1);
//标签
Label userName = new Label("用户名:");
grid.add(userName, 0, 1);
//文本输入框
final TextField userTextField = new TextField();
grid.add(userTextField, 1, 1);
Label passwd = new Label("密码");
grid.add(passwd, 0, 2);
//密码输入框
final PasswordField passwdField = new PasswordField();
grid.add(passwdField, 1, 2);
//按钮及按钮布局
Button btn = new Button("登陆");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn, 1, 4);
//点击登陆按钮显示的提示文字
final Text actiontarget = new Text();
actiontarget.setId("actiontarget");
grid.add(actiontarget, 1, 6);
//登陆按钮单击事件
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
actiontarget.setText("登陆成功");
grid.setVisible(false);
//表格面板
TablePane tp = new TablePane();
//加到场景中
Scene tpScene = new Scene(tp,500,500);
//切换舞台场景为表格面板
primaryStage.setScene(tpScene);
/* //获取用户名,密码的值
String userName = userTextField.getText();
String passWord = passwdField.getText();
//建立连接查询数据库
conn = JdbcUtil.getConn();
String sql = "select t.*, t.rowid from itcsys_user t where t.usercode='"+userName+"' and t.username='"+passWord+"'";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
if(rs.next()){
actiontarget.setText("登陆成功");
grid.setVisible(false);
//表格面板
TablePane tp = new TablePane();
//加到场景中
Scene tpScene = new Scene(tp,500,500);
//切换舞台场景为表格面板
primaryStage.setScene(tpScene);
}else{
actiontarget.setText("登陆失败");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JdbcUtil.close(rs,ps,conn);
}*/
}
});
Scene scene = new Scene(grid,300,275);
//为场景加入CSS样式
scene.getStylesheets().add(LoginWidthCss.class.getResource("LoginWidthCss.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
}
TablePane.class
package com.wei.table;
import com.wei.table.TableSample.scoreInfo;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
/**
* 列表面板
* @author wangwei
*
*/
public class TablePane extends AnchorPane {
public TablePane() {
//列表的列
TableColumn lshColumn = new TableColumn();
//列名
lshColumn.setText("流水号");
//列宽
lshColumn.setMinWidth(100);
//该列绑定的数据
lshColumn.setCellValueFactory(new PropertyValueFactory("lsh"));
TableColumn ksrqColumn = new TableColumn();
ksrqColumn.setText("考试日期");
ksrqColumn.setMinWidth(100);
ksrqColumn.setCellValueFactory(new PropertyValueFactory("ksrq"));
TableColumn kscjColumn = new TableColumn();
kscjColumn.setText("考试成绩");
kscjColumn.setMinWidth(100);
kscjColumn.setCellValueFactory(new PropertyValueFactory("score"));
//创建一个列表
TableView tableView = new TableView();
//在列表中加入列
tableView.getColumns().addAll(lshColumn,ksrqColumn,kscjColumn);
//表格的数据源
ObservableList<scoreInfo> data = FXCollections.observableArrayList();
//列表赋值
data.add(new scoreInfo("1", "2", "3"));
//为列表绑定数据
tableView.setItems(data);
//把列表加到面板中
this.getChildren().add(tableView);
}
}
切换窗口本来想做成点击登陆按钮后,隐藏当前窗口再显示新的窗口,找了很久也没能找到方法
最终使用切换面板这么个笨方法来实现,如果大家有更好的方法,请指点
http://download.csdn.net/detail/weiwei5910/5430339