还有人用Swing吗?!!!
感觉自己的表达能力好弱,问题总是描述不清楚。每次说什么很难让对方准确的明白我所想表达的,有的时候自己都感觉自己说不清。逻辑思维能弱咩?多练练吧!
有幸开发swing桌面应用,太有意思了。开发一个类似于word,小画家的应用,今天准备实现画流程这一块的内容,在工具栏中添加流程图按钮,简单的矩形、圆角矩形、菱形、箭头、圆形。用过word的都知道,选中按钮的背景颜色会变成橘黄色,让用户一眼就看出来自己选择了什么按钮。只需要被选中的那个按钮变色,之前被选中的得恢复到常态;
setBackground(Color.white);//常态
当我是setBackground(new Color(204,255,168,81));来设置为被选中的颜色的时候有意思的事情发生了,第一个参数是半透明效果,问题是这么做的话会导致多个按钮胡乱重叠,也就是界面绘制的时候一个按钮下出现了多个图形,我猜想是界面绘制的问题,于是我显示的调用了
mJFrame.validate();// 重构内容面板
mJFrame.repaint();// 重绘内容面板
这样做,当前选中的图形中还会出现其他的图形。后来去掉了这个含有半透明的参数的颜色new Color(204,255,168,81)),改成new Color(255,168,81),就能正常显示了。有意思吧!
我的实现代码
import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JToolBar; public class MToolBar extends JToolBar{ /**工具欄 * */ private static final long serialVersionUID = 1L; private List<JButton> flowLis; private String[] actionPerformArray; private JButton rect;//矩形 private JButton roundRect;//流程圖開始 private JButton diamond;//菱形 private JButton arrowLeft;//向左的箭頭 private JButton arrowRight;//向右的箭頭 private JButton arrowUp;//向上箭頭 private JButton arrowDown;//向下箭頭 private JButton round;//圓形 private String actionIndex="0";//用來記錄流程途中被按下按鈕的索引 private boolean DEBUG=true;// public MToolBar(){ initComponent(); add(createSchemeFlow());//添加流程圖的 addSeparator(); } private void initComponent() { rect=new JButton();//矩形 roundRect=new JButton();//流程圖開始 diamond=new JButton();//菱形 arrowLeft=new JButton();//向左的箭頭 arrowRight=new JButton();//向右的箭頭 arrowUp=new JButton();//向上箭頭 arrowDown=new JButton();//向下箭頭 round=new JButton();//圓形 flowLis=new ArrayList<JButton>(); flowLis.add(rect); flowLis.add(roundRect); flowLis.add(diamond); flowLis.add(arrowLeft); flowLis.add(arrowRight); flowLis.add(arrowUp); flowLis.add(arrowDown); flowLis.add(round); actionPerformArray="rect,roundRect,diamond,arrowLeft,arrowRight,arrowUp,arrowDown,round".split(",");//數組添加item的順序和List的順序保持一致,能按照index一一對應 setBackgroudColor(); } protected void setBackgroudColor() { rect.setBackground(Color.white); roundRect.setBackground(Color.white); diamond.setBackground(Color.white); arrowLeft.setBackground(Color.white); arrowRight.setBackground(Color.white); arrowUp.setBackground(Color.white); arrowDown.setBackground(Color.white); round.setBackground(Color.white); } private class MyActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { int index=0; if(!(e.getActionCommand().equals(actionIndex))) { index=Integer.parseInt(actionIndex); flowLis.get(index).setBackground(Color.white);//原來被按下的按鈕恢復為白色 } actionIndex=e.getActionCommand(); index=Integer.parseInt(actionIndex); // flowLis.get(index).setBackground(new Color(204,255,168,81)); flowLis.get(index).setBackground(new Color(255,168,81));//正被按下的按鈕顏色設置為橘黃色 if(DEBUG) { System.out.println("button"+actionPerformArray[Integer.parseInt(e.getActionCommand())]+"被點擊了"); } } ; }; protected JPanel createSchemeFlow() { JPanel jpanel=new JPanel(); jpanel.setLayout(null); jpanel.setPreferredSize(new Dimension(120, 0)); jpanel.setBorder(BorderFactory.createTitledBorder("流程圖")); JPanel flow=new JPanel(new GridLayout(2, 4, -1, -1)); for(int i=0;i<flowLis.size();i++) { flowLis.get(i).setIcon(new ImageIcon("images/"+actionPerformArray[i]+".png")); if(DEBUG) { System.out.println("奇怪"); } flowLis.get(i).setActionCommand(i+""); flowLis.get(i).addActionListener(new MyActionListener()); flow.add(flowLis.get(i)); } flow.setBounds(5, 15, 140, 70); jpanel.add(flow); return jpanel; } }
相关推荐
在人事管理系统中,Swing可以用来构建员工信息录入、查询、修改和删除等功能的交互界面,包括表格展示、按钮操作、下拉选择等元素。 MySQL,作为一款广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性...
【Swing聊天室】是一个基于Java Swing库实现的简单在线交流平台。Swing是Java标准版(Java SE)的一部分,提供了丰富的用户界面组件,用于构建桌面应用程序。在这个聊天室项目中,用户可以通过客户端进行文字交流,...
【Java项目开发——Chat即时聊天系统】是一个针对计算机科学与技术专业的实践项目,旨在让学生通过实际操作理解Java编程的核心概念和特性,同时掌握Java应用软件的开发流程。在这个项目中,学生们将使用JDK和Eclipse...
### 第十八章 图形界面开发——AWT,Swing,SWT #### 18.1 图形界面简介 ##### 18.1.1 概述 在本章中,我们将探讨Java图形用户界面(GUI)开发的核心概念和技术。虽然在Java开发中,Web应用程序占据了主导地位,但...
Java实践期末项目——Swing有界面图书管理程序 在计算机科学与信息技术领域,Java是一种广泛使用的编程语言,尤其在开发桌面应用方面,如本项目的图书管理程序。Swing是Java Standard Edition (Java SE) 中的一个...
本项目“java 图形界面程序——科研申报”就是这样一个基于Java Swing的GUI应用,它旨在为科研申报提供一个友好的交互平台。Java Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库来构建桌面应用...
本次我们将深入探讨如何使用Java Swing来开发一款经典的游戏——"植物大战僵尸"。 首先,我们要理解Swing的核心概念。Swing提供了一系列的组件,如JFrame、JButton、JLabel等,这些组件可以被用来创建窗口、按钮、...
本系统——"用Swing制作的简单图书管理系统"就是基于这一强大的库构建的。下面我们将深入探讨该系统的设计理念、主要功能以及Swing在其中的关键应用。 一、Swing基础与应用 Swing是Java Foundation Classes (JFC)的...
在本项目中,“基于JavaSwing实现的超级马里奥小游戏”是一个利用Java编程语言的图形用户界面库——Java Swing,来复刻经典游戏“超级马里奥”的尝试。这个项目旨在提供一个基础的马里奥游戏框架,包括基本的游戏...
这通常会涉及到Java Swing或JavaFX库,用于创建窗口、按钮、文本框等控件,实现用户输入和系统反馈。 5. **业务逻辑**:这部分涉及到系统的核心功能,如借阅流程的控制,确保同一本书不能同时被多人借阅;归还时...
2. 用户界面:使用 Swing 组件构建各个功能模块的界面,例如,使用 JTable 显示商品列表,JComboBox 选择供应商或客户,JTextArea 输入订单详情等。 3. 数据操作:编写 Java 类来封装数据库操作,如添加商品、更新...
本系统——“图书管理系统使用java swing组件的图书馆图书借还系统,集成条形码扫描仪”正是为满足这一需求而设计的。该系统充分利用了Java语言的强大功能,特别是Swing组件,实现了图形用户界面(GUI),并集成了...
标题中的"swing_mysql_demo.rar_ActionIcon png_DEMO_swing mysql_swing管理系统"表明这是一个使用Java Swing库开发的管理系统,结合了MySQL数据库,并且包含了ActionIcon的PNG图片资源,可能用于界面按钮或者菜单项...
《学生选课成绩信息管理系统——基于Java Swing的实现详解》 在信息技术日益发达的今天,学生选课成绩信息管理系统已经成为教育领域不可或缺的一部分。本系统基于Java Swing开发,旨在提供一个直观、高效的管理平台...
"开心对对碰小游戏源码(含演示录像)_Java_Swing" 这个标题表明我们正在讨论一个基于Java Swing技术开发的轻量级游戏——开心对对碰。它不仅包含了游戏的源代码,还提供了一个演示录像,方便开发者理解和学习。 ...
本系统——基于Java+Swing的图书馆管理系统,是一个典型的案例,展示了如何将这两者结合,实现一个功能完备、用户友好的图书管理平台。下面,我们将深入探讨其设计原理、主要功能以及关键实现技术。 一、系统架构与...
【标题】"精选_基于java.swing实现的发送邮件的小程序_源码打包"指的是一个使用Java编程语言,特别是Swing库开发的桌面应用程序,它的主要功能是发送电子邮件。Swing是Java SE的一部分,提供了一组丰富的组件和工具...
【标签】:“我自己编的图片浏览器”进一步确认了该程序为个人原创作品,这意味着可能采用了基础的编程语言,如Python、C#或Java,结合了图像处理库,例如Python的PIL(Pillow)或Java的AWT/Swing,来实现基本的图片...
《Java小游戏——雷电》是基于Java编程语言开发的一款经典飞行射击类游戏,深受玩家喜爱。作为初涉游戏开发的尝试,它展示了Java在游戏开发领域的应用潜力。下面将详细介绍这款游戏中涉及的主要Java技术和相关知识点...
【Java项目——飞机游戏】是一个非常适合初学者上手的编程实践项目,它主要基于Java语言进行开发,旨在帮助学习者巩固基础知识,理解面向对象编程、事件处理、图形用户界面(GUI)设计等核心概念。通过这个项目,...