黑马程序员_Java基础_GUI

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

GUI是Java中提供的一个图形化界面的操作类,其中布局方式有:

BorderLayout (边界布局)、FlowLayout(线性布局)、BoxLayout()、CardLayout(卡片布局)、GridLayout(表格布局)等等,布局间是可以进行嵌套使用的,此时需要Panel(面板)。

在GUI中,开发步骤为:1.组件的初始化,布局      2.设置监听    3.事件处理

package com.itheima.gui;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileReader;

public class GUIDemo {

	private Frame frame;
	private MenuBar mBar;
	private TextArea mTextArea;
	private Menu menu1,menu2;
	private MenuItem item1,item2,item3;
	private FileDialog dialog1,dialog2;
	private Button b1,b2;
	private Dialog d ;
	private Label l;
	private Panel p;
	public GUIDemo(){
		init();
	}
	//初始化组件,设置监听
	private void init(){
		frame = new Frame();
		frame.setTitle("记事本");
		mTextArea = new TextArea(10, 100);
		mBar = new MenuBar();
		item1 = new MenuItem("new");
		item2 = new MenuItem("open");
		item3 = new MenuItem("save");
		dialog1 = new FileDialog(frame, "打开", FileDialog.LOAD);
		dialog2 = new FileDialog(frame, "保存", FileDialog.SAVE);
		menu1 = new Menu("file");
		l = new Label("exit...........?");
		d = new Dialog(frame);
		d.setLayout(new BorderLayout());
		d.setBounds(350, 250, 250, 95);
		b1 = new Button("ok");
		b2 = new Button("cancle");
		p = new Panel(new FlowLayout());
		p.add(b1);
		p.add(b2);
		d.add(l,BorderLayout.NORTH);
		d.add(p,BorderLayout.CENTER);
		
		d.setTitle("确定退出吗?");
		
		d.setAutoRequestFocus(true);
		menu1.add(item1);
		menu1.add(item2);
		menu1.add(item3);
		menu2 = new Menu("edit");
		frame.setBounds(300, 200, 500, 400);
		frame.setLayout(new BorderLayout());
		frame.setLocation(300, 200);
		mBar.add(menu1);
		mBar.add(menu2);
		frame.setMenuBar(mBar);
	
		frame.add(mTextArea);
		frame.setFocusable(true);
		setEventListener();
		frame.setVisible(true);
	}
	//设置监听器
	private void setEventListener(){
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		item1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				mTextArea.setText("");
			}
		});
		
		mTextArea.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
					mTextArea.setFocusable(false);
				}
			}
		});
		mTextArea.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent e) {
				mTextArea.setFocusable(true);
			}
		});
		frame.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
					d.setVisible(true);
					
				}
			}
		});
		d.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				d.setVisible(false);
			}
		});
		b1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		b2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				d.setVisible(false);
			}
		});
		item2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				mTextArea.setText("");
				dialog1.setVisible(true);
				String filePath = dialog1.getDirectory()+dialog1.getFile();
				if(dialog1.getDirectory()==null || dialog1.getFile() == null){
					return;
				}
				try {
					BufferedReader mReader = new BufferedReader(new FileReader(filePath));
					String line = null;
					while((line = mReader.readLine())!= null){
						mTextArea.append(line);
						mTextArea.append(System.getProperty("line.separator"));
					}
				} catch (Exception e1) {
					e1.printStackTrace();
				}
				
			}
			
		});
		item3.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				dialog2.setVisible(true);
			}
		});
	}
	public static void main(String[] args) {
		new GUIDemo();
	}
	
}
关于GUI中的API没有详细查看,但是重要的是图像界面的编程思想。


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java GUI的布局和设置背景可以通过以下方式实现: 1. 布局:Java GUI提供了多种布局方式,包括FlowLayout、GridLayout、BorderLayout、CardLayout等,你可以根据实际需求选择合适的布局方式来实现自己的界面布局。 2. 设置背景:Java GUI中可以通过设置JFrame、JPanel等组件的背景色或者背景图片来实现设置背景的效果。具体实现方法如下: - 设置背景色:可以通过setBackgroundColor(Color c)来设置组件的背景色。 - 设置背景图片:可以通过setBackgroungImage(Image img)来设置组件的背景图片,也可以通过继承JComponent类并重写paintComponent()方法来实现自定义的背景图片。 注意:在使用背景图片时,需要确保背景图片的大小与组件的大小相同,否则会出现拉伸或者重复的情况。 示例代码如下: ``` import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public class MyFrame extends JFrame { private JPanel panel; public MyFrame() { // 设置窗口标题 setTitle("My Frame"); // 设置窗口大小 setSize(400, 300); // 设置窗口关闭时的操作 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建面板 panel = new JPanel() { // 重写paintComponent()方法,绘制背景图片 @Override protected void paintComponent(Graphics g) { ImageIcon icon = new ImageIcon("bg.jpg"); // 加载背景图片 Image img = icon.getImage(); g.drawImage(img, 0, 0, getWidth(), getHeight(), this); // 绘制背景图片 } }; // 设置面板背景色 panel.setBackground(Color.WHITE); // 将面板添加到窗口中 add(panel); // 显示窗口 setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值