以下代码是修改他人的源码,增加一些注释。
利用以下的功能基本可以写一个小的窗体程序了。
package test2;import java.awt.BorderLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.util.Arrays;import java.util.List;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPassWordField;import javax.swing.JTextField;import javax.swing.SwingUtilities;import javax.swing.UIManager; /** * @author Administrator * */public class MyFrameTow extends JPanel { PRivate static final String LABEL_USERNAME = "用户账号:"; private static final String LABEL_PASSWORD = "用户密码:"; private static final String LABEL_OK = "确定"; private static final String LABEL_Cancel = "取消"; private static final int FIELD_COLS = 20; private JTextField fieldUsername; private JPasswordField fieldPassword; private Action actionOK; private Action actionCancel; public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } JFrame test = new JFrame("欢迎进入本系统"); test.setContentPane(new MyFrameTow()); test.pack(); test.setResizable(false); test.setLocationRelativeTo(null); test.setDefaultCloSEOperation(JFrame.DISPOSE_ON_CLOSE); test.setVisible(true); } }); } MyFrameTow() { super(new BorderLayout(5, 5)); assert SwingUtilities.isEventDispatchThread(); // 文本框 fieldUsername = new JTextField(FIELD_COLS); // 密码框 fieldPassword = new JPasswordField(FIELD_COLS); actionOK = new AbstractAction(LABEL_OK) { @Override public void actionPerformed(ActionEvent e) { // @TODO to be implemented. 实现确认按钮的操作 //TODO String text = fieldUsername.getText(); if (text.isEmpty()) { JOptionPane.showMessageDialog(null, "用户名不能为空!", "提示", JOptionPane.ERROR_MESSAGE); return; } JOptionPane.showMessageDialog(null, "这是一个假登录"+text, "提示", JOptionPane.ERROR_MESSAGE); } }; actionCancel = new AbstractAction(LABEL_Cancel) { @Override public void actionPerformed(ActionEvent e) { // @TODO to be implemented. 实现取消按钮的操作 //退出程序 System.exit(0); } }; // BorderLayout.NORTH 这是指定向北浮动 add(layoutText(Arrays.asList( "第一行文字", "第二行文字", "第三行文字")), BorderLayout.NORTH); add(layoutFields(), BorderLayout.CENTER); add(layoutControl(), BorderLayout.SOUTH); setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); } private JComponent layoutControl() { // 控件布局 JComponent result = new JPanel(); // 这里是确认 和 取消的按钮 result.add(new JButton(actionOK)); result.add(new JButton(actionCancel)); return result; } private JComponent layoutFields() { // 布局位置 JComponent result = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; //固定 向西 gbc.anchor = GridBagConstraints.WEST; //是否填充 gbc.fill = GridBagConstraints.NONE; gbc.insets = new Insets(5, 5, 5, 5); //加入文字描述 result.add(new JLabel(getBolDHTML(LABEL_USERNAME)), gbc); gbc.gridy++; result.add(new JLabel(getBoldHTML(LABEL_PASSWORD)), gbc); gbc.gridx++; gbc.gridy = 0; gbc.fill = GridBagConstraints.HORIZONTAL; result.add(fieldUsername, gbc); gbc.gridy++; result.add(fieldPassword, gbc); return result; } private JComponent layoutText(List<String> lines) { assert lines != null; JComponent result = new JPanel(new GridLayout(lines.size(), 1)); for (String line : lines) result.add(new JLabel(line)); result.setBorder(BorderFactory.createEmptyBorder(5, 10, 0, 10)); return result; } private String getBoldHTML(String s) { // 设置字体的大小粗细 return "<html><b>" + s + "</b></html>"; }}这里是打包jar 的教程:http://blog.csdn.net/QQ_27292113/article/details/54632963
新闻热点
疑难解答