public class Demo1 {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createGUI();
}
});
}
private static void createGUI() {
JFrame jf = new JFrame("Swing Demo");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭窗口所执行的操作
jf.setSize(500,800);//设置窗口大小
//内容面板
Container con = jf.getContentPane();
con.setLayout(new FlowLayout());
con.add(new JLabel("hello,world"));//添加文本
con.add(new JButton("测试"));//添加按钮
jf.setVisible(true);//设置是否可见
}
}
JFrame jf = new JFrame();
//JFrame jf = new JFrame("name");
//添加内容面板
Container con = jf.getContentPane();
con.setLayout(new FlowLayout());
//添加各种组件
con.add(new JLabel("hello,world"));//添加文本
con.add(new JButton("测试"));//添加按钮
jf.setSize(400, 300);//设置大小
jf.setLocationRelativeTo(null);//设置出现的位置:null:中间
jf.setVisible(true);//设置是否可见
子窗体用来添加各种组件,然后展示在父窗体里
JLabel jl = new JLabel("标签显示文字");
con.add(jl);
jl.setText("标签显示文字"); //设置文本
jl.setFont(new Font("微软雅黑", 0, 14));//设置字体
jl.setForeground(Color.black);//设置文本颜色
jl.setToolTipText("提示文字");//设置工具提示
jl.setOpaque(true)//设置背景不透明
jl.setBackground(Color)//设置背景色
j1.setPreferredSize(new Dimension(60, 30));//设置标签大小
j1.setHorizontalAlignment(SwingConstants.CENTER);//设置文字在标签内的位置
JButton jb = new JButton("确定");//新建按钮
con.add(jb);//添加进内容面板
jb.addActionListener((e)->{ //使用匿名内部类创建监听器对象,绑定给该按钮
//点击之后的动作
});
JLabel lable = new JLabel("姓名:");
JTextField textField = new JTextField(16);// 设置单行文本框
JButton button = new JButton("确定");
textField.setEnabled(true);//设置文本框是否可用
textField.getText();//获取文本框输入的内容
JPasswordField passwordField = new JPasswordField();
String password = new String(passwordField.getPassword());//获取输入的密码
JCheckBox jcbox = new JCheckBox("我已阅读并同意");//新建复选框
jcbox.setSelected(true);//设置复选框的选中状态
jcbox.isSelected();//获知复选框是否被选中
JComboBox<T> box = new JComboBox<>(); //泛型
//添加内容
box.addItem("选项1");
box.addItem("选项2");
box.addItem("选项3");
//按索引访问,下标从0开始
box.getSelectedIndex();//获取选中项的索引
box.setSelectedIndex(anIndex);//设置选中项
box.remove(index);//删除指定下标的索引
//按数据项访问
box.getSelectedItem();//获取选中项
box.setSelectedItem(anObject);//设置选中项
box.remove(comp);//删除指定项
JRadioButton rdbtnNewRadioButton = new JRadioButton("男",true);
JRadioButton rdbtnNewRadioButton_1 = new JRadioButton("女");
ButtonGroup group = new ButtonGroup();//关联, 添加JRadioButton到ButtonGroup中,实现单选效果
group.add(rdbtnNewRadioButton);
group.add(rdbtnNewRadioButton_1);
//获取选中的按钮的值
String str = "null";
Enumeration<AbstractButton> elements = group.getElements();
while (elements.hasMoreElements()) {
AbstractButton btn = elements.nextElement();
if (btn.isSelected()) {
str = btn.getText();
break;
}
}
DefaultTableModel dtm = new DefaultTableModel();// 设置默认的表控制模型
JTable tbale = new JTable(dtm);// 把根据表控制模型新建一个表
JScrollPane js = new JScrollPane(tbale);// 把表添加到带滚动条的面板中
add(js);
// 添加列名
dtm.addColumn("ID");
dtm.addColumn("name");
// dtm.addColumn("ID", new Object[] { 1, 2, 3, 4 });// 添加列名,列值集合(对象数组,Vector均可)
Object[] o = new Object[] { "0001", 2 };
// 添加值
dtm.addRow(o);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");// 创建根节点
DefaultMutableTreeNode r1 = new DefaultMutableTreeNode("叶节点1");// 创建叶节点1
DefaultMutableTreeNode r2 = new DefaultMutableTreeNode("叶节点2");// 创建叶节点2
DefaultMutableTreeNode r3 = new DefaultMutableTreeNode("叶节点3");// 创建叶节点3
DefaultMutableTreeNode r4 = new DefaultMutableTreeNode("叶节点4");// 创建叶节点4
root.add(r1);
root.add(r2);
root.add(r3);
root.add(r4);
JTree j = new JTree(root);
//添加节点点击事件
tree.addTreeSelectionListener((e) -> {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (node.toString().equals("节点名")) {
//节点点击事件
}
});
关于布局最好用WindowBuilder来做,敲代码太TM累了
con.setLayout("布局");//设置布局方式
FlowLayout f = new FlowLayout()//流布局
BorderLayout b = new BorderLAyout();
方式1:
//把一个JPanel放进另一个JPanel
Container con = jf.getContentPane();//设置内容面板
con.setLayout(new BorderLayout());//使用边界布局
JPanel carde = new JPanel();//新建JPanel
con.add(carde, BorderLayout.CENTER);//把carde放进内容面板
carde.add(home, "系统主界面");//把一个JPanel放进另一个JPanel
CardLayout manager = carde.getLayout();//获取父容器的布局器
manager.show(carde, name);//把父容器的页面切换成给定界面
方式2:
con.setLayout(new CardLayout());//把顶层容器JFrame的布局设置为卡片布局
con.add(carde);//把JPanel添加进顶层容器
CardLayout layout = (CardLayout)con.getLayout();//获取卡片布局器
layout.show(jf, name);;//切换页面
方式1:
//自定义布局器,实现LayoutManager接口,并重写其中的layoutContainer(Container parent)方法
方式2:
//自定义抽象类,实现layoutManager接口,补上其他方法,不重写layoutContainer(Container parent),
//需要自定义布局器的时候,只需要继承自定义的抽象类就好了
Border b1 = new LineBorder(Color.BLUE);//新建一个线型边框
Border b1 = new LineBorder(Color.BLUE,4);//新建一个线型边框,4像素
Border b1 = new LineBorder(Color.BLUE,4,true);////新建一个线型边框,4,像素,边框炜圆角