两大窗口、两大中间容器、四大组件
两大窗口(JFrame和Jdialog)
JFrame:
package Swing;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Example15 extends JFrame {
public Example15() {
this.setTitle("JFrameTest");
this.setSize(250, 300);
//定义一个按钮组件
JButton bt=new JButton("按钮");
//设置为流式布局管理器
this.setLayout(new FlowLayout());
this.add(bt);
//设置单击关闭按钮时的默认操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new Example15();
}
}
Jdialog:
package Swing;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Example16 {
public static void main(String[] args) {
JButton btn1 =new JButton("模拟对话框");
JButton btn2 =new JButton("非模拟对话框");
JFrame f= new JFrame("DialogDemo");
f.setSize(300,300);
f.setVisible(true);
f.setLocation(300, 300);
f.setLayout(new FlowLayout());//为内容面板设置布局管理器
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(btn2);
f.add(btn1);
final JLabel label= new JLabel();//中间容器
final JDialog dialog =new JDialog(f,"Dialog");
dialog.setSize(350, 250);
dialog.setLocation(350, 250);
dialog.setLayout(new FlowLayout());
final JButton btn3=new JButton("确定");
dialog.add(btn3);//在对话框的内容面板添加按钮
//为模拟对话框添加单击事件
btn1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//设置对话框为模拟
dialog.setModal(true);
if(dialog.getComponents().length==1) {
dialog.add(label);
}
//否则修改标签的内容
label.setText("模拟对话框,点击确定按钮关闭");
dialog.setVisible(true);
}
});
//为非模拟对话框添加事件单击按钮
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//设置对话框非模拟
dialog.setModal(false);
//如果J
if(dialog.getComponents().length==1) {
dialog.add(label);
}
//否则修改标签的内容
label.setText("非模拟对话框,点击确定关闭");
dialog.setVisible(true);
}
});
btn3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dialog.dispose();
}
});
}
}
两大中间容器(JFrame和JScrollPane)
package Swing;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
public class Example17 extends JFrame {
public Example17() {
this.setTitle("PanelDemo");
//创建滚动面板
JScrollPane scrollPane=new JScrollPane();
//设置水平滚动条策略 滚动条一直显示
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants
.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants
.VERTICAL_SCROLLBAR_ALWAYS);;
//定义一个JPanel面板
JPanel panel = new JPanel();
//在面板上添加四个按钮
panel.add(new JButton("按钮1"));
panel.add(new JButton("按钮2"));
panel.add(new JButton("按钮3"));
panel.add(new JButton("按钮4"));
panel.add(new JButton("按钮1"));
panel.add(new JButton("按钮2"));
panel.add(new JButton("按钮3"));
panel.add(new JButton("按钮4"));
//设置JPanel面板上的滚动条
scrollPane.setViewportView(panel);
//滚动面板添加到内容面板的center区域
this.add(scrollPane,BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 250);
this.setVisible(true);
}
public static void main(String[] args) {
new Example17();
}
}
四大组件(文本组件、按钮组件、下拉框组件、菜单栏组件)
文本组件:JtextArea文本域,JtextFeid文本框
package Swing;
import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Example18 extends JFrame{
JButton sendBt;
JTextArea chatContent;
JTextField inputField;
public Example18() {
this.setLayout(new BorderLayout());
chatContent =new JTextArea(12,34); // 创建一个文本域
//创建一个滚动面板,将文本域作为其显示组件
JScrollPane showPanel =new JScrollPane(chatContent);
chatContent.setEditable(false);//创建
JPanel inputPanel =new JPanel();//创建一个Jpanel
inputField = new JTextField(20);//创建一个文本框
sendBt =new JButton("发送");//创建一个按钮
//为sentBt添加事件
sendBt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s = inputField.getText();//获取输入文本的信息
if(s!=null&&!s.trim().equals("")) {
chatContent.append("本人:"+s+"\n");
}else {
chatContent.append("聊天信息不能为空"+"\n");
}
inputField.setText("");
}
});
Label label =new Label("聊天信息");//创建一个标签
inputPanel.add(label);
inputPanel.add(inputField);
inputPanel.add(sendBt);
//将滚动面板和JPanel面板添加到JFrame窗口
this.add(showPanel,BorderLayout.CENTER);
this.add(inputPanel, BorderLayout.SOUTH);
this.setTitle("聊天窗口");
this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new Example18();
}
}
按钮组件(JButton、JCeckBox、JRadioButton)
JCeckBox:
package Swing;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Example19 extends JFrame{
private JCheckBox italic;
private JCheckBox bold;
private JLabel label;
public Example19() {
//创建一个标签,标签文本居中对齐
label = new JLabel("传智播客",JLabel.CENTER);
//设置标签文本的字体
label.setFont(new Font("宋体",Font.PLAIN,20));
this.add(label); //在center域添加标签
JPanel panel =new JPanel(); //创建一个面板
//创建两个JCheckBox复选框
italic = new JCheckBox("复选框1");
bold = new JCheckBox("复选框2");
//为复选框定义ActionListener监听器
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int mode =0;
if(bold.isSelected()) {
mode +=Font.BOLD;
}
if(italic.isSelected())
mode +=Font.ITALIC;
label.setFont(new Font("宋体",mode,20));
}
};
//为两个复选框添加监听器
italic.addActionListener(listener);
bold.addActionListener(listener);
panel.add(italic);
panel.add(bold);
italic.addActionListener(listener);
this.setVisible(true);
this.setSize(300, 300);
this.add(panel,BorderLayout.SOUTH); //将面板添加到JPanel领域
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//为两个复选框添加监听器
public static void main(String[] args) {
new Example19();
}
}
JRadioButton
package Swing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class Example20 extends JFrame{
private ButtonGroup group;//单选按钮组对象
private JPanel panel; //JPanel面板放置3个JRadioButton按钮
private JPanel pallet; // JPanel面板作为调色
public Example20() {
pallet = new JPanel(); //创建JPanel对象
this.add(pallet,BorderLayout.CENTER); //将调色面板放置在中间
panel = new JPanel();
group = new ButtonGroup();
//调用addJRadioButton()方法
addJRadioButton("灰");
addJRadioButton("粉");
addJRadioButton("黄");
this.add(panel,BorderLayout.SOUTH);
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.TEXT_CURSOR);
this.setVisible(true);
}
/**
* @param JRadioButton按钮的文本信息 用于创建一个带文本信息的JRadioButton按钮
* 将按钮添加到panel面板和ButtonGroup按钮中 并添加监听器
*/
private void addJRadioButton(String text) {
// TODO Auto-generated method stub
JRadioButton radioButton = new JRadioButton(text);
group.add(radioButton);
panel.add(radioButton);
//为单选按钮添加监听器
radioButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Color color = null;
if("灰".equals(text)) {
color= Color.GRAY;
}
else if("粉".equals(text)) {
color = Color.PINK;
}
else if("黄".equals(text)) {
color = Color.yellow;
}
else {
color = Color.white;
}
pallet.setBackground(color);
}
});
}
public static void main(String[] args) {
new Example20();
}
}
JcomoBox下拉框
package Swing;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/*
* 下拉列表按钮框
*/
public class Example21 extends JFrame {
private JComboBox comboBox; //定义一个JComboBox组合框
private JTextField field;
public Example21() {
JPanel panel = new JPanel(); //创建JPanel面板
comboBox = new JComboBox(); //创建一个下拉按钮
//为组合框添加选项
comboBox.addItem("请选着城市");
comboBox.addItem("北京");
comboBox.addItem("天津");
comboBox.addItem("南京");
comboBox.addItem("广州");
comboBox.addItem("湛江");
//为组件添加事件监听器
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String item = (String)comboBox.getSelectedItem();//获取下拉框的项目
if("请选着城市".equals(item)) {
field.setText("");
}else {
field.setText("您选着的城市是"+item);
}
}
});
field = new JTextField(20);
panel.add(comboBox); //在面板上添加文本框
panel.add(field);
//在内容面板中添加JPanel面板
this.add(panel,BorderLayout.NORTH);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(350, 100);
}
public static void main(String[] args) {
new Example21();
}
}
JMenuBar、Jmenu、JmenuItem菜单组件
package Swing;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Example22 extends JFrame {
public Example22() {
JMenuBar menuBar = new JMenuBar();//创建菜单栏
this.setJMenuBar(menuBar); //将菜单篮添加到JFrame窗口中
JMenu menu = new JMenu("操作");//创建菜单栏
menuBar.add(menu); // 将菜单添加到菜单篮上
//创建两个菜单项
JMenuItem item1 = new JMenuItem("弹出窗口");
JMenuItem item2 =new JMenuItem("关闭");
JMenuItem item3 = new JMenuItem("选着");
//为菜单项添加事件监听器
item1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//创建一个JDialog窗口
JDialog dialog = new JDialog(Example22.this,true);//接受一个框架 ,和是否对话框
dialog.setTitle("弹出窗口");
dialog.setSize(200, 200);
dialog.setLocation(50, 50);
dialog.setVisible(true);
}
});
item2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
menu.add(item1);//将菜单项目添加到菜单中
menu.addSeparator();//添加分隔符
menu.add(item2);
menu.insert(item3, 2);
menu.insertSeparator(3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new Example22();
}
}
JPopupMenu弹出式菜单
package Swing;
import java.awt.Frame;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
public class Example23 extends JFrame {
private JPopupMenu popupmenu;// 属性
public Example23(){
//创建一个JPopuMenu 菜单
popupmenu = new JPopupMenu();
//创建三个JMenuItem菜单项
JMenuItem refreshItem = new JMenuItem("刷新");
JMenuItem createItem = new JMenuItem("创作");
JMenuItem exiteItem = new JMenuItem("退出");
//为exitItem菜单栏添加事件监听器
exiteItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
//往JPopupMenu菜单添加菜单项
popupmenu.add(refreshItem);
popupmenu.add(createItem);
popupmenu.addSeparator();
popupmenu.add(exiteItem);
//为JFrame窗口添加Clicked鼠标事件监听器
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//如果单击的数鼠标的右键,显示JPopupMenu菜单
if(e.getButton()==e.BUTTON3) {
popupmenu.show(e.getComponent(),e.getX(),e.getY());
}
}
});
this.setSize(300,300);
// this.setDefaultCloseOperration();
// this.addWindowListener(new windowListener()) ;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new Example23();
}
}
Jtable表
package Swing;
import javax.swing.*;
import javax.swing.*;
public class Example24 {
//创建JFrame窗口
JFrame jf=new JFrame("简单表格");
//定义一维数组作为标题
Object[]columnTitle= {"姓名","年龄","性别"};
//声明Jtalle类型的变量
JTable table;
//1.定义二维数组作为表格行对象shuju
Object[][]tableDate= {
new Object[] {"李清照",29,"女"},
new Object[] {"苏格拉底",56,"男"},
new Object[] {"李白",35,"男"},
new Object[] {"弄玉",18,"女"},
new Object[] {"虎头",2,"男"},
};
//3。使用JTable对象创建表格
public void init() {
//以二维数组和一维数组来创建一个Ttable对象
table =new JTable(tableDate,columnTitle);
//将JTable对象放在JScrollPane中,并将JScrollPane放在窗口中显示出来
jf.add(new JScrollPane(table));
jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String []args) {
new Example24().init();
}
}