Java中边框布局:
1.把窗口分成5个区域:北、南、东、西、中 每个区域最多只能可以包含一个组件 (如果想把窗口分的更多 可以再其中一个区域上添加面板 面板上再添加组件)
2.NORTH 和 SOUTH 组件可以在水平方向上拉伸;而 EAST 和 WEST 组件可以在垂直方向上拉伸;CENTER 组件可同时在水平和垂直方向上拉伸,从而填充所有剩余空间。(例子中的panelcenter的大小没有意义,panelleft的height和panelbottom的width没有意义)
Java中单选按钮:
1.通过ButtonGroup对象 给多个单选按钮进行逻辑分组
2.当多个JRadioButton共用一个事件监听器的时候,如何获取产生事件的按钮?(Java中获得
ButtonGroup选项的方法)
a.在画图板主类中每个单选按钮对象调用setActionCommand();方法 设置唯一的动作命令
eg:JRadioButton btn1 = new JRadioButton("直线");
btn1.setActionCommand("line");//设置唯一标识
b.按钮组对象调用getSelection();方法 获得被选中的按钮模型
eg:ButtonGroup group = new ButtonGroup();
ButtonModel model = group.getSelection();
c.ButtonMode对象调用getActionCommand();获得动作命令
eg:String str = model.getActionCommand();
d.通过str的值来进行区分鼠标选中的是哪个按钮
(步骤2和3可以合并 String str=group.getSelection().getActionComman();)
方法说明:
void setActionCommand(String s)//设置按钮及其模型的动作命令
ButtonModel getSelection() //返回被选择的按钮的按钮模型
String getActionCommand() //返回该按钮的动作命令字符串
Java中不同类里共享私有变量可以通过构造方法来实现
新手一只,请多指教!
DrawUI
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class DrawUI {
public static void main(String[] args) {
JFrame jf=new JFrame();
jf.setSize(600, 500);
jf.setTitle("画图板");
jf.setDefaultCloseOperation(3);
//指定窗口布局为边框布局
BorderLayout layout=new BorderLayout();
jf.setLayout(layout);
//添加一个用来绘图的面板
JPanel panelleft=new JPanel();
panelleft.setBackground(Color.blue);
//设置大小
Dimension dimleft=new Dimension(100,1);
panelleft.setPreferredSize(dimleft);
JPanel panelcenter=new JPanel();
panelcenter.setBackground(Color.gray);
//中间组件大小没有意义
// Dimension dimcenter=new Dimension(1,1);
// panelcenter.setPreferredSize(dimcenter);
JPanel panelbottom=new JPanel();
panelbottom.setBackground(Color.green);
Dimension dimbottom=new Dimension(1,100);
panelbottom.setPreferredSize(dimbottom);
//把面板添加到窗口中,指定放的位置【东西南北中】
jf.add(panelleft,BorderLayout.WEST);
jf.add(panelcenter,BorderLayout.CENTER);
jf.add(panelbottom,BorderLayout.SOUTH);
//*********************给左边的面板添加形状选择工具***********************//
//按钮组对象,给单选按钮进行逻辑分组
ButtonGroup group =new ButtonGroup();
JRadioButton button1=new JRadioButton("直线");
panelleft.add(button1);//加在左边面板上
group.add(button1);//添加分组
button1.setActionCommand("line");//设置唯一标识
button1.setSelected(true);//设置默认选中 避免出现空指针的错误
JRadioButton button2=new JRadioButton("矩形");
panelleft.add(button2);
group.add(button2);
button2.setActionCommand("rect");
JRadioButton button3=new JRadioButton("椭圆");
panelleft.add(button3);
group.add(button3);
button3.setActionCommand("oval");
//*****************给中间的面板添加绘图面板***************************//
JPanel drawpanel=new JPanel();
Dimension drawdim=new Dimension(400,300);
drawpanel.setPreferredSize(drawdim);
drawpanel.setBackground(Color.white);
//流式布局是添加在中间面板上的
//面板默认的布局为流式布局
//指定中间面板的布局为流式布局左对齐
FlowLayout drawlayout =new FlowLayout(FlowLayout.LEFT);
panelcenter.setLayout(drawlayout);
panelcenter.add(drawpanel);
//********************给底部的面板添加颜色选择工具***********************//
jf.setVisible(true);
//由于是绘制在drawpanel上的,所以只需要给drawpanel添加鼠标监听器
DrawListener listener=new DrawListener(drawpanel, group);
//给面板添加鼠标监听器
drawpanel.addMouseListener(listener);
}
}
DrawListener
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.JPanel;
public class DrawListener implements MouseListener {
private int x1,x2,y1,y2;
private Graphics g;
private JPanel drawpanel;
private ButtonGroup group;
private String str="line";//初始化避免出现空指针的错误
//通过构造方法实现不同类中私有变量的共享
public DrawListener(JPanel drawpanel1,ButtonGroup group1){
drawpanel=drawpanel1;
group=group1;
}
public void mousePressed(MouseEvent e) {
// 鼠标按下准备绘制图形的时候先获取能绘制的区域[画布]
// 获取drawPanel在屏幕上占据的区域,作为可以改变颜色的区域
g=drawpanel.getGraphics();
// 鼠标按下准备绘制的时候来确定要绘制的图形
// 获得被选中的按钮模型
ButtonModel model=group.getSelection();
// 获得动作命令[每一个按钮的唯一标识]
str=model.getActionCommand();
// str=group.getSelection().getActionCommand();
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
// 绘制图形
if(str.equals("line")){
g.drawLine(x1, y1, x2, y2);
}
else if(str.equals("rect")){
int x=x1<x2?x1:x2;
int y=y1<y2?y1:y2;
int width=x1<x2?x2-x1:x1-x2;
int height=y1<y2?y2-y1:y1-y2;
g.drawRect(x, y, width, height);
}
else if(str.equals("oval")){
int x=x1<x2?x1:x2;
int y=y1<y2?y1:y2;
int width=x1<x2?x2-x1:x1-x2;
int height=y1<y2?y2-y1:y1-y2;
g.drawOval(x, y, width, height);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
分享到:
相关推荐
【JAVA简易画图板】是一个基于Java编程语言开发的简单绘图应用程序,它为用户提供了一个基本的图形界面,用户可以通过这个界面进行简单的绘画操作。这个程序包含了一些基本的绘图功能,如绘制形状、使用铅笔工具以及...
【Java简易画图板】是一个基于Java编程语言开发的简单图形绘制工具,它为用户提供了一个基本的画布,用户可以通过各种绘图工具进行创作。这个程序包含了一系列基础的图形元素和编辑功能,如直线、铅笔、圆形和矩形,...
在Java编程语言中,实现一个简单的Windows画图板是一个经典的练习,它可以帮助初学者更好地理解图形用户界面(GUI)的设计以及事件处理机制。这个项目通常会涉及到Java的Swing库,这是一个用于创建桌面应用程序的GUI...
通过以上步骤,我们可以构建一个功能齐全的Java简易画图板。这个项目不仅可以帮助学习者掌握Java GUI编程,还能加深对图形绘制和事件处理的理解。在实际开发过程中,还可以进一步增加撤销/重做功能、图层管理、...
Java 画图板程序设计与实现 Java 画图板是使用 Java 语言编写的图形绘制程序,提供了基本的绘图功能,如画笔、直线、椭圆、矩形等,用户可以使用该程序绘制简单的图形。下面我们将对 Java 画图板程序进行详细的分析...
在Java编程语言中,实现一个简单的画图板是一项常见的任务,尤其对于初学者来说,它可以帮助理解图形用户界面(GUI)编程的基本概念。这个项目涵盖了Java AWT(Abstract Window Toolkit)或Swing库中的基本绘图功能...
在这个简易画图板项目中,我们可能需要使用`JFrame`作为应用程序的主窗口,`JPanel`作为画布,以及`Graphics2D`对象进行绘图。 1. **JFrame**: 是Swing中的顶级容器,相当于窗口。在这里,我们将用它来创建我们的...
在本项目中,"java简单画图板" 是一个基于Java编程语言开发的简易图形界面应用程序,主要目标是为用户提供一个基本的画图环境。这个画图板支持绘制直线、椭圆、矩形以及使用喷枪工具,同时具备画笔、橡皮擦、油漆桶...
这个"Java简单画图板"项目提供了基本的绘画功能,如绘制、保存、打开以及擦除,为用户提供了一个自定义图形的平台。下面将详细解释其中涉及的关键知识点。 首先,我们需要了解Java Swing库,它是Java AWT(Abstract...
在JAVA编程环境中,创建一个简易的画图板是一项有趣且实用的任务。这个画图板能够提供多种基础图形绘制功能,包括直线、圆形、矩形、橡皮擦、喷枪、椭圆、圆角矩形、弧线以及多边形。在实现过程中,主要涉及到Swing...
在Java学习过程中,创建一个简单的画图板是一个经典的练习项目,它可以帮助我们深入理解图形用户界面(GUI)的构建和事件处理机制。本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1...
【JAVA应用程序 画图板】是一个使用JAVA编程语言实现的简单图形用户界面(GUI)应用,它提供了一个画布供用户进行绘画操作。这个程序的核心是利用JAVA的Swing或JavaFX库来创建图形界面,并处理用户的输入事件,如...
【简易画图板程序java】是一个基于Java编程语言实现的简单图形绘制软件,它涵盖了图形学的基本概念和技术,为用户提供了一个交互式的平台,可以进行基本的图形绘制操作。这个程序的核心功能包括画直线、绘制圆以及对...
Java简易绘图板实现是一个基于Java编程语言的项目,它为初学者提供了一个基础的图形绘制平台。这个项目的核心目标是让学习者了解和实践如何在Java环境下进行图形用户界面(GUI)的开发,以及图形的绘制和保存功能。...
在Java编程语言中,创建一个简单的画图板是一项有趣且实用的任务,可以帮助初学者更好地理解图形用户界面(GUI)的设计和事件处理。本项目通过Java实现了基础的绘图功能,包括绘制矩形、圆形、三角形、多边形以及...
Java画图板小程序是一个基于Java编程语言开发的图形用户界面应用,它提供了丰富的绘图功能,如移动、复制和换色等,旨在为用户提供一个简单而直观的创作平台。这个程序的设计采用了MVC(Model-View-Controller)架构...
Java画图板程序是一种利用Java编程语言开发的图形用户界面应用,主要目的是提供一个平台让用户可以进行简单的绘图操作。这个程序的特点是功能全面且代码实现简洁,对于初学者来说,是一个很好的学习和实践项目。 ...
Java画图板是一种基于Java语言实现的图形用户界面(GUI)工具,允许用户在屏幕上绘制图形和图像。在Java中,我们通常使用Java AWT(Abstract Window Toolkit)或Swing库来创建这样的画图应用程序。这两个库都是Java ...
在Java编程语言中,开发一个简单的画图面板是一项常见的任务,尤其对于初学者来说,它可以帮助理解图形用户界面(GUI)的构建以及事件处理。在这个项目中,我们使用Java实现了一个基本的画图面板,允许用户绘制直线...
《精美JAVA程序 画图板》是一款基于JAVA编程语言开发的图形用户界面应用程序,专为用户提供一个简单易用、功能丰富的画图平台。在已经安装并配置好Java Development Kit (JDK) 的环境下,用户只需双击提供的.jar文件...