概述
GUI
Gui的核心技术: Swing AWT
GUI能做什么
1写一些小工具
2 工作时候,也可能需要维护到swing界面,概率极小!
3了解MVC架构,了解监听!
AWT介绍
- 包含了很多类和接口! GUI !
- 元素:窗口,按钮,文本框
GUI的界面
Frame
Frame Java的图形化界面窗口
Frame中的方法
.setVisible(true);设置窗口的可见性
.setSize(400,400); 设置窗口大小
.setBackground(new Color(85, 150, 68)); //设置背景颜色 Color
.setLocation(200,200);弹出的初始位置
.setResizable(false);设置固定的大小
.setBounds(其实位置x,y窗口大小x,y);设置窗口弹出位置和窗口大小
.setLayout()设置布局
.add()添加
.pack()自适应窗口大小位置
Panel 画板
panel设置坐标,相对于frame
panel.setBounds(50,50,400,400);设置背景颜色
画板是相对于界面中的必须先有界面才可有画板
布局
组件
Button按钮 有参构造里面可输入按钮名称
设置流式布局
布局也是相对与界面的布局
流式布局
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
一排一排布局从做或者右开始布局
东西南北中布局
BorderLayout.EAST
BorderLayout.WEST
BorderLayout.SOUTH
BorderLayout.NORTH
BorderLayout.CENTER
表格布局 Grid
setLayout(new GridLayout(2,2));
几行几列
练习
public MyFrame(int x ,int y, int w ,int h,Color color ){
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
Button button4= new Button("button4");
setLayout(new GridLayout(2,1));
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new GridLayout(2,1));
Panel p3 = new Panel(new BorderLayout());
Panel p4 = new Panel(new GridLayout(2,2));
p1.add(button1,BorderLayout.EAST);
p1.add(button2,BorderLayout.WEST);
p2.add(button3);
p2.add(button4);
p1.add(p2);
add(p1);
p3.add(new Button(),BorderLayout.EAST);
p3.add(new Button(),BorderLayout.WEST);
for (int i = 0; i < 4; i++) {
Button button = new Button("b"+i);
p4.add(button);
}
p3.add(p4,BorderLayout.CENTER);
add(p3);
setBounds(1,1,200,200);
setVisible(true);
}
文本框
new TextFiled()创建一个文本框
.setEchoChar(’ 替换的字符’)可以替换输入的内容;
事件的监听
.addActionListener()增加一个监听事件因为是有参构造所以必须传一个参数进去
所以我们需要构造一个 ActionListener的实现接口。
按钮 文本框等多种都可以实现监听
public static void main(String[] args) {
Frame frame = new Frame();
frame.setBounds(1,1,100,100);
TextField textField = new TextField();
MyActionLisener myActionLisener = new MyActionLisener();
textField.addActionListener(myActionLisener);
textField.setEchoChar('*');//设置替换的编码
frame.setVisible(true);
frame.add(textField,BorderLayout.CENTER);
}
}
class MyActionLisener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField textField = (TextField) e.getSource();//获得一些资源,返回的一个对象
System.out.println(textField.getText());
}
}
e.getSource()获得一些资源,返回的一个对象
画笔
public class TestPaint {
public static void main(String[] args) {
new MyPaint().loadFrame();
}
}
class MyPaint extends Frame{
public void loadFrame(){
setBounds(200,200,600,500);
setVisible(true);
}
//画笔
@Override
public void paint(Graphics g) {
//画笔,需要有颜色,画笔可以画画
//g.setColor(Color.red);
//g.drawOval(100,100,100,100);
g.fillOval(100,100,100,100); //实心的园
// g.setColor(Color.GREEN);
g.fillRect(150,200,200,200);
//养成习惯,画笔用完,将他还原到最初的颜色
}
}
鼠标监听
//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
ArrayList<Point> points;
public Frame2(){//设置一个空参准备初试化必要的面板
points = new ArrayList<Point>();//建一个数组来存放点里面存放点所以泛型设置为点
setBounds(1,1,100,100);
setVisible(true);
addMouseListener(new Mymouse());//设置鼠标监听
}
//画笔
@Override
public void paint(Graphics g) {
super.paint(g);
Iterator<Point> iterator = points.iterator();
while (iterator.hasNext())
{
Point next = iterator.next();//从数组中画出这个点
g.setColor(Color.red);//设置点的颜色
g.fillOval(next.x,next.y,10,10);//设置点的大小和位置
}
}
public void addpoint(Point p){
points.add(p);//将这个点存入数组
}
class Mymouse extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
Frame2 fame = (Frame2)e.getSource();//返回一些资源,返回的式调用者的实例化对象
fame.addpoint(new Point(e.getX(),e.getY()));//新建一个点用来记录鼠标监听的点,并且把这个点存入数组
fame.repaint();//刷新
}
}
键盘监听
public KeyFrame() {
setBounds(1,1,200,200);
setVisible(true);
addKeyListener(new Mykey());
}
class Mykey extends KeyAdapter{
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
int keyCode = e.getKeyCode();
if(keyCode==KeyEvent.VK_UP)
{
System.out.println("上");
}
}
}
Swing
1 JFrame
JFrame jFrame = new JFrame();
jFrame.setBounds(1,1,100,100);
jFrame.setVisible(true);
JLabel jLabel = new JLabel("123");
jFrame.add(jLabel);//增加一句话
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//关窗口
与Frame类似不过多了一个容器,更改颜色样式增加按钮等需要给容器中增加,而不是直接给FRAME中加
2Jpanel
public JPanelDemo() {
Container container = this.getContentPane();
// container.setLayout(new GridLayout(2,1,10,10)); //后面的参数的意思,间距
this.setLayout(new GridLayout(2,1,10,10));//发现panel中可以不使用container也可以直接添加到Frame
container.setBackground(Color.green);//但是要设置Frame的背景颜色必须要使用容器
JPanel panel1 = new JPanel(new GridLayout(1,3));
JPanel panel2 = new JPanel(new GridLayout(1,2));
JPanel panel3 = new JPanel(new GridLayout(2,1));
JPanel panel4 = new JPanel(new GridLayout(3,2));
panel1.setBackground(Color.BLUE);//可以直接设置Panel背景颜色
panel1.add(new JButton("1"));
panel1.add(new JButton("1"));
panel1.add(new JButton("1"));
panel2.add(new JButton("2"));
panel2.add(new JButton("2"));
panel3.add(new JButton("3"));
panel3.add(new JButton("3"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
this.add(panel1);
this.add(panel2);
this.add(panel3);
this.add(panel4);
this.setVisible(true);
this.setSize(500,500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JPanelDemo();
}
}
弹窗
public Jframetext() {
setVisible(true);
setBounds(1,1,200,200);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container container = this.getContentPane();//调用容器
container.setLayout(null);//设置样式
Button button = new Button("xx");//增加一个按钮
button.setBounds(30,30,100,100);//设置按钮位置大小
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Jdialog();
}
});
container.add(button);//添加按钮
container.setBackground(Color.red);//设置背景颜色
}
}
//设置弹窗
class Jdialog extends JDialog{
public Jdialog(){
setBounds(3,3,100,100);//设置弹窗位置大小
setVisible(true);
Container container = this.getContentPane();//设置弹窗容器
container.setLayout(null);
container.add(new Label("盛大的"));
}
}
标签
public PicterIcon(){
JLabel label = new JLabel();//图片不可以直接放到JFrame中只能使用JLabel
URL resource = PicterIcon.class.getResource("tx.jpg");//得到图片的路径
ImageIcon image = new ImageIcon(resource);//
label.setIcon(image);//给标签设置图片
label.setHorizontalAlignment(SwingConstants.CENTER);//设置位置
Container contentPane = getContentPane();//得到Fra'me容器
contentPane.add(label);//将标签假如容器
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
contentPane.setBounds(1,1,200,200);
}
public static void main(String[] args) {
new PicterIcon();
}
ImageIcon可以加到标签上可以加到按钮上,一般new Imageicon然后将其加入标签或者按钮上,不可以直接加
单选按钮组按钮
public RadioButton() throws HeadlessException {
Container contentPane = this.getContentPane();
JRadioButton jRadioButton = new JRadioButton("01");//设置多选按钮
JRadioButton jRadioButton2 = new JRadioButton("02");
JRadioButton jRadioButton3 = new JRadioButton("03");
ButtonGroup buttonGroup = new ButtonGroup();//设置一个组将其加入
buttonGroup.add(jRadioButton);
buttonGroup.add(jRadioButton2);
buttonGroup.add(jRadioButton3);
contentPane.add(jRadioButton,BorderLayout.CENTER);
contentPane.add(jRadioButton2,BorderLayout.NORTH);
contentPane.add(jRadioButton3,BorderLayout.SOUTH);
setBounds(1,1,200,200);
setVisible(true);
}
public static void main(String[] args) {
new RadioButton();
}
复选按钮
JCheckBox checkBox01 = new JCheckBox("checkBox01");
JCheckBox checkBox02 = new JCheckBox("checkBox02");
container.add(checkBox01,BorderLayout.NORTH);
container.add(checkBox02,BorderLayout.SOUTH);
this.setVisible(true);
this.setSize(500,300);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
下拉框
JComboBox status = new JComboBox();
status.addItem(null);
status.addItem("正在热映");
status.addItem("已下架");
status.addItem("即将上映");
列表框
Container container = this.getContentPane();
Vector contents = new Vector();
//列表中需要放入内容
JList jList = new JList(contents);
contents.add("zhangsan");
contents.add("lisi");
contents.add("wangwu");
container.add(jList);
文本框
Container container = this.getContentPane();
JTextField textField = new JTextField("hello");
JTextField textField2 = new JTextField("world",20);
container.add(textField,BorderLayout.NORTH);
container.add(textField2,BorderLayout.SOUTH);
密码框
Container container = this.getContentPane();
//面板
JPasswordField passwordField = new JPasswordField(); //****
passwordField.setEchoChar('*');
container.add(passwordField);
文本域
Container container = this.getContentPane();
//文本域
JTextArea textArea = new JTextArea(20, 50);
textArea.setText("欢迎学习狂神说Java");
//Scroll面板
JScrollPane scrollPane = new JScrollPane(textArea);
container.add(scrollPane);
最后
以上就是体贴小熊猫为你收集整理的GUI编程的全部内容,希望文章能够帮你解决GUI编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复