Swing
package com.vetor.Demo;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class WindowMenu extends JFrame { //JFrame的子类
JMenuBar menubar;
JMenu menu,subMenu;
JMenuItem item1,item2;
//框架
public WindowMenu(String s,int x,int y,int w,int h)
{
init(s);
setBounds(x, y, w, h); //大小
setVisible(true); //可见
setDefaultCloseOperation(DISPOSE_ON_CLOSE); //关闭
}
//具体
void init(String s) {
setTitle(s); //设置标题
//创建了一些组件
menubar = new JMenuBar(); //菜单条
menu = new JMenu("菜单");
subMenu = new JMenu("软件项目");
item1 = new JMenuItem("java话题");
item2 = new JMenuItem("动画话题");
//设置键
item1.setAccelerator(KeyStroke.getKeyStroke('A'));
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
//添加组件了!!!
menu.add(item1);
menu.addSeparator(); //下划线
menu.add(item2);
menu.add(subMenu);
subMenu.add(new JMenuItem("汽车销售系统"));
subMenu.add(new JMenuItem("农场信息系统"));
menubar.add(menu);
//添加菜单选项
setJMenuBar(menubar);
}
}
package com.vetor.Demo;
import java.awt.BorderLayout;
import javax.swing.*;
public class ShowLayout extends JFrame{
//这样写的话就可以进行多次利用
PanelGridLayout pannelGrid; //网格布局的面板
PanelNullLayout panelNull; //空布局的面板
JTabbedPane p ; //选项卡窗格
ShowLayout() {
pannelGrid = new PanelGridLayout();
panelNull = new PanelNullLayout();
p = new JTabbedPane();
p.add("网格布局的面板",pannelGrid);
p.add("空布局的面板",panelNull);
add(p,BorderLayout.CENTER);
add(new JButton("窗体是BorderLayout布局"),BorderLayout.NORTH);
add(new JButton("南"),BorderLayout.SOUTH);
add(new JButton("西"),BorderLayout.WEST);
add(new JButton("东"),BorderLayout.EAST);
setBounds(10, 10, 570, 390);
setVisible(true);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
validate(); //
}
}
package com.vetor.Demo;
import javax.swing.*;
public class PanelNullLayout extends JPanel{
JButton button;
JTextField text;
public PanelNullLayout() {
setLayout(null); //空布局
button = new JButton("确定");
text = new JTextField();
add(text);
add(button);
//窗口中又有窗口,相对于窗口的位置及大小
text.setBounds(100, 30, 90, 30);
button.setBounds(190, 30, 66, 30);
}
}
import java.awt.*;
import javax.swing.*;
public class PanelGridLayout extends JPanel {
PanelGridLayout() {
GridLayout grid = new GridLayout(12,12); //网格布局
setLayout(grid);
Label label[][] = new Label[12][12]; //创建一个二维数组的标签
//添加标签并设置颜色
for(int i = 0; i < 12;i++)
{
for(int j = 0; j<12;j++)
{
label[i][j] = new Label();
if((i+j)%2==0)
{
label[i][j].setBackground(Color.black);
}
else {
label[i][j].setBackground(Color.white);
}
add(label[i][j]);
}
}
}
}
public class Example9_4 {
public static void main(String[] args) {
new ShowLayout();
}
}
public class Example9_3 {
public static void main(String[] args) {
//继承JFrame的类就变成了一个窗体
ComponentInWindow win = new ComponentInWindow();
win.setBounds(100, 100, 450, 260);
win.setTitle("常用组件");
}
}
public class Example9_2 {
public static void main(String[] args) {
WindowMenu win = new WindowMenu("带菜单的窗口", 20, 30, 200, 190);
}
}
package com.vetor.Demo;
import java.awt.*;
import javax.swing.*;
public class ComponentInWindow extends JFrame{
JCheckBox checkBox1,checkBox2; //复选框
JRadioButton radioM,radioF; //单选框
ButtonGroup group;
JComboBox<String> comBox; //下拉列表
public ComponentInWindow() {
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void init() {
setLayout(new FlowLayout());
comBox = new JComboBox<>();
checkBox1 = new JCheckBox("喜欢音乐");
checkBox2 = new JCheckBox("喜欢旅游");
group = new ButtonGroup();
radioM = new JRadioButton("男");
radioF = new JRadioButton("女");
//归组才能实现单选
group.add(radioF);
group.add(radioM); //同一组
add(checkBox1);
add(checkBox2);
add(radioF);
add(radioM);
comBox.addItem("音乐天地");
comBox.addItem("武术天地");
add(comBox);
}
}
例子五:
public class Example9_5 {
public static void main(String[] args) {
WindowBoxLayout win = new WindowBoxLayout();
win.setBounds(100, 100, 310, 260);
win.setTitle("嵌套盒式布局容器");
}
}
import java.awt.*;
import javax.swing.*;
public class WindowBoxLayout extends JFrame{
Box boxH; //行式盒
Box boxVOne,boxVtwo; //列式盒
public WindowBoxLayout() {
setLayout(new java.awt.FlowLayout());
}
void init() {
boxH = Box.createHorizontalBox();
boxVOne = Box.createVerticalBox();
boxVtwo = Box.createVerticalBox();
boxVOne.add(new JLabel("姓名:"));
boxVOne.add(new JLabel("职业:"));
boxVtwo.add(new TextField(10));
boxVtwo.add(new JTextField(10));
boxH.add(boxVOne);
boxH.add(Box.createHorizontalStrut(10));
boxH.add(boxVtwo);
add(boxH); //最后将最大的东西添加进去
}
}
2.部分结果