日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

画图工具-mini画板

發布時間:2023/12/3 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 画图工具-mini画板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JFrame類

它是屏幕上window的對象,能夠最大化、最小化、關閉,解決將Swing三大基本構造塊

(按鈕、標簽、文本字段)組織起來,并把它們呈現給用戶——(容器)

JPanel類

是java圖形用戶界面(GUI)工具包swing中的面板容器類,是一種輕量級容器,可以加入到Fram窗體中,其自身可以嵌套組合,在不同子容器中包含其他組件(Button,TextArea等)功能是對窗體上的這些控制進進行組合。

以下是部分代碼實現:

package mini.draw.Pad;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;/*** 畫圖工具類* 1.創建一個窗體* 2.創建面圖花板* 3.實現隨筆畫功能* 4.擴充菜單欄* 5.擴充性狀態欄(按鈕)*/
public class MiniDrawPad {private JFrame jFrame = new JFrame("迷你畫圖板");//帶有標題和邊框的頂層窗口//定義畫圖區域的高度和寬度private final int WIDTH = 1000;private final int HEIGHT = 700;private MyPanel mp = new MyPanel();//定義一個BufferedImage對象,并獲取image對象的Graphics-畫筆BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);//指定一個寬和高,創建一個不帶透明色的對象Graphics2D g = (Graphics2D) image.getGraphics(); //獲得在圖像上畫圖的工具-畫筆//設置畫筆的顏色private Color color = Color.black; //當前默認顏色黑色//畫筆的粗細private float stroke = 1.0f;//上一次鼠標拖動事件的鼠標坐標private int prex = -1;private int prey = -1;int R, G, B; //用來存放當前的色彩值String style1; //用來存放當前字體JLabel statusBar;//當前鼠標狀態//創建畫板類public class MyPanel extends JPanel {//設置畫板public MyPanel() {setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));setBounds(0, 0, WIDTH, HEIGHT);setBackground(Color.WHITE);}public void paint(Graphics g) {g.drawImage(image, 0, 0, null);//img-要繪制的指定圖像,如果為null,該方法不執行任何操作}}//選擇顏色public void chooseColor() {color = JColorChooser.showDialog(jFrame, "選擇顏色", color);R = color.getRed();G = color.getGreen();B = color.getBlue();color = new Color(R, G, B);}//獲取畫筆//創建菜單條public void createBar() {JMenuBar bar = new JMenuBar();//定義菜單條JMenu fileMenu = new JMenu("file");//fileMenu.setMnemonic('F');//表示助記符的鍵代碼JMenuItem newItem = new JMenuItem("New");//菜單項newItem.setMnemonic('N');JMenuItem saveItem = new JMenuItem("Save");//菜單項saveItem.setMnemonic('S');JMenuItem openItem = new JMenuItem("Open");//菜單項openItem.setMnemonic('O');//退出菜單項JMenuItem exitItem = new JMenuItem("Exit");//菜單項exitItem.setMnemonic('E');exitItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});fileMenu.add(newItem);fileMenu.add(saveItem);fileMenu.add(openItem);fileMenu.addSeparator();fileMenu.add(exitItem);//顏色菜單JMenu colorMenu = new JMenu("Color");JMenuItem colorItem = new JMenuItem("Choose Color");colorItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//如果被觸發,則調用選擇顏色函數段chooseColor();}});colorMenu.add(colorItem);//設置線條粗細菜單JMenu strokeMenu = new JMenu("Stroke");JMenuItem strokeItem = new JMenuItem("Set Stroke");strokeItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//如果被觸發,則調用設置線條粗細的函數段setStroke();}});strokeMenu.add(strokeItem);//設置提示菜單JMenu helpMenu = new JMenu("Help");JMenuItem aboutItem = new JMenuItem("About this Draw pad!");aboutItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null, "this is a mini draw pad Copy(c)2020","畫圖板程序說明", JOptionPane.INFORMATION_MESSAGE);}});helpMenu.add(aboutItem);bar.add(fileMenu);bar.add(colorMenu);bar.add(strokeMenu);bar.add(helpMenu);jFrame.setJMenuBar(bar);}//設置線條粗細public void setStroke() {String input = JOptionPane.showInputDialog("請輸入一個float數值( >0 )");stroke = Float.parseFloat(input);}//創建按鈕public void createButton() {JToolBar buttonPanel = new JToolBar(JToolBar.HORIZONTAL);String[] buttonNames = {"隨筆", "直線", "空心圓", "空心矩形", "橡皮擦", "文字按鈕"};for (int i = 0; i < buttonNames.length; i++) {JButton button = new JButton(buttonNames[i]);buttonPanel.add(button);}//設置字體風格的選擇String[] styleNames = {"宋體", "隸書", "楷體", "仿宋", "華文行楷", "方正舒體", "仿宋_GB2312", "Serif"};JComboBox styles = new JComboBox<>(styleNames);styles.setMaximumRowCount(6);  //設置JComboBox顯示的最大行數styles.addItemListener(new ItemListener() {@Overridepublic void itemStateChanged(ItemEvent e) {style1 = styleNames[styles.getSelectedIndex()];}});styles.setMinimumSize(new Dimension(50, 20));styles.setMaximumSize(new Dimension(120, 20));JCheckBox bold = new JCheckBox("BOLD"); //復選框JCheckBox italic = new JCheckBox("ITALIC"); //buttonPanel.add(bold);buttonPanel.add(italic);buttonPanel.add(styles);statusBar = new JLabel("當前的鼠標狀態");statusBar.setText("welcome minidraw pad!!!");Container c = jFrame.getContentPane();//初始化一個容器c.add(buttonPanel, BorderLayout.NORTH);c.add(statusBar, BorderLayout.SOUTH);}public void init() {/**對于鼠標的移動和拖放,用鼠標運動監聽器MouseMotionListener*/mp.addMouseMotionListener(new MouseMotionAdapter() {@Overridepublic void mouseDragged(MouseEvent e) {if (prex > 0 && prey > 0) {g.setColor(color);g.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));g.drawLine(prex, prey, e.getX(), e.getY());//x1,x2是確定直線的起始點,分別是橫縱坐標,同理x2,y2確定直線的終點}prex = e.getX();prey = e.getY();statusBar.setText("Mouse Press @[" + e.getX() + "," + e.getY() + "]");mp.repaint(); //重繪mp對象}});jFrame.setBounds(0, 0, WIDTH, HEIGHT);jFrame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});g.fillRect(0, 0, WIDTH, HEIGHT);jFrame.add(mp);createBar();createButton();jFrame.setVisible(true);}public static void main(String[] args) {MiniDrawPad miniDrawPad = new MiniDrawPad();miniDrawPad.init();}}

?由于時間關系,沒能做完,只是半成。。。 以后有時間再繼續完成把。

總結

以上是生活随笔為你收集整理的画图工具-mini画板的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。