packagecom.adao.swing;importjava.awt.BorderLayout;importjava.awt.Dimension;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjavax.swing.BorderFactory;importjavax.swing.DefaultComboBoxModel;importjavax.swing.JButton;importjavax.swing.JComboBox;importjavax.swing.JComponent;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JPasswordField;importjavax.swing.JTabbedPane;importjavax.swing.JTextField;public classWeimingSyncApplets {public static voidmain(String[] args) {//面板组件
JPanel taskPanel = newJPanel();
JPanel dbPanel= newJPanel();
JTabbedPane tabbedPane=buildJTabbedPane(taskPanel, dbPanel);
buildFrame(tabbedPane);
}private staticJTabbedPane buildJTabbedPane(JPanel taskPanel, JPanel dbPanel) {//选项卡面板
JTabbedPane tabbedPane = newJTabbedPane();//通过BorderFactory来设置边框的特性
tabbedPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
tabbedPane.add("执行任务", taskPanel);
tabbedPane.add("数据源配置", dbPanel);//下拉框
dbPanel.add(buildJLabel("数据库类型", 30, 20, 80, 25));
String dbs[]= {"mysql", "oracle", "sqlserver"};
dbPanel.add(buildJComboBox("mysql", "mysql", dbs, 0, 100, 20, 165, 25));//文本框
dbPanel.add(buildJLabel("用户名", 30, 50, 80, 25));
JTextField dbUserName= buildJTextField("dbUserName", "dbUserName", 20, 100, 50, 165, 25);
dbPanel.add(dbUserName);//密码
dbPanel.add(buildJLabel("密码", 30, 80, 80, 25));
JPasswordField dbPassWord= buildJPasswordField("dbPassWord", "dbPassWord", 20, 100, 80, 165, 25);
dbPanel.add(dbPassWord);//添加按钮,并为按钮绑定事件监听
JButton saveButton = buildJButton("保存", 185, 230, 80, 25);
addActionListener(saveButton);
dbPanel.add(saveButton);returntabbedPane;
}private static voidaddActionListener(JButton saveButton) {//为按钮绑定监听器
saveButton.addActionListener(newActionListener() {
@Overridepublic voidactionPerformed(ActionEvent e) {//对话框
JOptionPane.showMessageDialog(null, "保存成功!");
}
});
}private static JButton buildJButton(String name, int x, int y, int width, intheight) {
JButton button= newJButton(name);
button.setBounds(x, y, width, height);returnbutton;
}private static JPasswordField buildJPasswordField(String defaultValue, String name, int columns, int x, int y, int width, intheight) {
JPasswordField jPasswordField= newJPasswordField(columns);
jPasswordField.setText(defaultValue);
jPasswordField.setName(name);
jPasswordField.setBounds(x, y, width, height);returnjPasswordField;
}private static JTextField buildJTextField(String defaultValue, String name, int columns, int x, int y, int width, intheight) {
JTextField text= newJTextField(columns);
text.setText(defaultValue);
text.setName(name);
text.setBounds(x, y, width, height);returntext;
}private static JComboBox buildJComboBox(Object selectedItem, String name, String[] elements, int selectedIndex, int x, int y, int width, intheight) {
DefaultComboBoxModel codeTypeModel= newDefaultComboBoxModel();//elements 下拉框中的选项
for(String element : elements) {
codeTypeModel.addElement(element);
}
JComboBox codeTypeBox= newJComboBox(codeTypeModel);
codeTypeBox.setName(name);//默认选中的下拉框选项
codeTypeBox.setSelectedItem(selectedItem);//codeTypeBox.setSelectedItem(selectedIndex);
codeTypeBox.setBounds(x, y, width, height);//添加下拉框事件监听器
codeTypeBox.addItemListener(newItemListener() {
@Overridepublic voiditemStateChanged(ItemEvent e) {if (e.getStateChange() ==ItemEvent.SELECTED) {//选择的下拉框选项
System.out.println(e.getItem());
}
}
});returncodeTypeBox;
}private static JLabel buildJLabel(String name, int x, int y, int width, intheight) {
JLabel label= newJLabel(name);
label.setBounds(x, y, width, height);returnlabel;
}private static voidbuildFrame(JComponent component) {//窗体容器
JFrame frame = new JFrame("数据同步工具");
frame.add(component);//JFrame.EXIT_ON_CLOSE 退出//JFrame.HIDE_ON_CLOSE 最小化隐藏
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//设置布局
frame.getContentPane().setLayout(newBorderLayout());
frame.getContentPane().add(BorderLayout.CENTER, component);//设置窗口最小尺寸
frame.setMinimumSize(new Dimension(1060, 560));//调整此窗口的大小,以适合其子组件的首选大小和布局
frame.pack();//设置窗口相对于指定组件的位置
frame.setLocationRelativeTo(null);
frame.setVisible(true);//设置窗口尺寸是否固定不变
frame.setResizable(true);
}
}