java实用教程——组件及事件处理——对话框(颜色对话框,自定义对话框)

颜色对话框:
可以用javax.swing包中的JColorChooser类的静态方法
public staticColorshowDialog (Component
component, String title,
Color initialColor)

创建一个有模式的颜色对话框,其中参数component指定颜色对话框可见时的位置,颜色对话框在参数component指定的组件的正前方显示出来,如果
component为null,颜色对话框在屏幕的正前方显示出来。

title指定对话框的标题,initialColor指定颜色对话框返回的初始台调色板颜色。
用户通过颜色对话框选择颜色后,如果单击“确定”按钮,那么颜色对话框将消失,showDialog()方法返回对话框所选择的颜色对象。如果单击“ 撤销”按钮或关闭图标,那预览样品文本样品文本颜色对话框将消失,showDialog0方 法返回null.
在下面的例子19中,当用户单击按钮时,弹出一个颜色对话框,然后根据用户选择的颜色来改变窗口的颜色。程序中颜色对话框的运行效果如图9.19所示。

public class Example9_19 {public static void main(String args[]) {WindowColor win=new WindowColor();win.setTitle("带颜色对话框的窗口"); win.setBounds(80,90,500,500);}}
import java.awt.event.*; 
import java.awt.*;
import javax.swing.*;
public class WindowColor extends JFrame implements ActionListener {JButton button;WindowColor() {button=new JButton("打开颜色对话框"); button.addActionListener(this);setLayout(new FlowLayout());add(button);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {Color newColor=JColorChooser.showDialog(this,"调色板",getContentPane().getBackground());if(newColor!=null) {getContentPane().setBackground(newColor); }    }
}

在这里插入图片描述
在这里插入图片描述

自定义对话框:

创建对话框与创建窗口类似,通过建立JDialog的子类来建立一个对话框类,然后这个类的一个实例,即这个子类创建的一一个对象,就是-个对话框。
对话框是一个容器,它的默认布局是BorderLayout,对话框可以添加组件,

实现与用户的交互操作。需要注意的是,对话框可见时,默认地被系统添加到显示器屏幕上,因此不允许将一个对话框添加到另-一个容器中。以下是构造对话框的两个常用构造方法。
●JDialog0构造-.个无标题的初始不可见的对话框,对话框依赖一个默认的不可见的窗口,该窗口由Java运行环境提供。

●JDialog(JFrame owner) 构造一 个无标题的初始不可见的无模式的对话框,owner是对话框所依赖的窗口,如果owner取null,对话框依赖一个默认的不可见的输入窗口的新标题窗口,该窗口由Java运行环境提供。

下面的使用自定义对话框更改窗口的标题

public class Example9_20 {public static void main(String args[]) {MyWindow win=new MyWindow();win.setTitle("带自定义对话框的窗口"); win.setSize(620,360);}}
import java.awt.*;
import javax.swing.*;
import java.util.Arrays;
public class MyWindow extends JFrame  {JButton button; JTextArea  showRedBall ;//存放红球号码int []  redNumber;MyWindow() {init();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}void init() {button=new JButton("得到双色球彩票的一组红球"); showRedBall = new JTextArea(10,20);showRedBall.setForeground(Color.red);this.setLayout(new FlowLayout());this.add(button);this.add(showRedBall);showRedBall.setLineWrap(true);//add(button,BorderLayout.NORTH); //add(new JScrollPane(showRedBall),BorderLayout.CENTER); button.addActionListener((e)->{redNumber = MyDialog.showRandomArrayDiolog(this,"红球号码","双色球对话框",MyDialog.YES_NO_OPTION,33,6);if(redNumber!=null) {Arrays.sort(redNumber);showRedBall.append(Arrays.toString(redNumber)+"\n"); } });Font f = new Font("",Font.BOLD,28);SetFont.setFont(f,button,showRedBall);}
}
import java.awt.*;
import javax.swing.*;
import java.util.Random;
import java.util.Arrays;
public class MyDialog  { public static final int YES_NO_OPTION = 1;static int backNumber[] = null; //该返回的数组public static int[] showRandomArrayDiolog(Component parentComponent,String message,String title,int optionType,int max,int amount){ JDialog dialog = new JDialog((JFrame)parentComponent);dialog.setModal(true);dialog.setTitle(title);JLabel mess = new JLabel(message);JTextField showArray = new JTextField(20);//显示得到的一组随机数int [] arraysNumber = getRandomNumber(max,amount);showArray.setText(Arrays.toString(arraysNumber));dialog.setLayout(new FlowLayout());JButton yesButton = new JButton();JButton noButton = new JButton();if(optionType==YES_NO_OPTION) {yesButton.setText("是(Yes)");noButton.setText("否(No)");}else {JOptionPane.showMessageDialog(parentComponent,"参数取值不正确","消息",JOptionPane.ERROR_MESSAGE);return backNumber;}dialog.add(mess);dialog.add(showArray);dialog.add(yesButton);dialog.add(noButton);yesButton.addActionListener((e)->{backNumber = arraysNumber;dialog.setVisible(false);});noButton.addActionListener((e)->{dialog.setVisible(false);});Font f = new Font("",Font.BOLD,28);SetFont.setFont(f,mess,showArray,yesButton,noButton);dialog.setBounds(500,60,600,300);dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);dialog.setVisible(true);return backNumber;}private static int [] getRandomNumber(int max,int amount) {// 1至max之间的amount个不同随机整数(包括1和max)int [] randomNumber = new int[amount];Random random = new Random();int count = 0;while(count<amount){int number = random.nextInt(max)+1;boolean isInArrays=false;for(int m:randomNumber){//m依次取数组randomNumber元素的值if(m == number){isInArrays=true;  //number在数组里了break;}}if(isInArrays==false){//如果number不在数组randomNumber中:randomNumber[count] = number;count++;   }}return  randomNumber;}
}
import javax.swing.JComponent;
import java.awt.Font;
public class SetFont {public static void setFont(Font f,JComponent ...component){for(JComponent c:component)c.setFont(f);}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core/.NET 5.0 析构函数依然有效?

【导读】最近看到小伙伴在.NET Core中用到了析构函数&#xff0c;不禁打一疑问&#xff0c;大部分情况下&#xff0c;即使在.NET Framework中都不会怎么用到析构函数&#xff0c;我想在.NET Core中是否还依然有效呢&#xff1f;随着时间推移&#xff0c;迭代版本更新&#xff0…

java实用教程——常用实用类——String类(字符串类)

JAVA把String类定义为final类(因此用户不能扩展String类&#xff0c;即String类不可以有子类) String对象可以用""进行并置运算 identityHashCode会返回对象的hashCode&#xff0c;而不管对象是否重写了hashCode方法。 public class Example8_1 {public static void…

sqlserver 事务日志 异常增长原因排查_小白入门学习打日志

前言只有光头才能变强。文本已收录至我的GitHub仓库&#xff0c;欢迎Star&#xff1a;https://github.com/ZhongFuCheng3y/3y记得之前写过一篇&#xff1a;《阿里巴巴 Java开发手册》读后感&#xff0c;之前自学时由于没怎么接触过打“日志”&#xff0c;所以《手册》中的“日志…

在 k8s 中部署 Prometheus 和 Grafana

部署 Prometheus 和 Grafana 到 k8sIntro上次我们主要分享了 asp.net core 集成 prometheus&#xff0c;以及简单的 prometheus 使用&#xff0c;在实际在 k8s 中部署的时候就不能在使用前面讲的静态配置的方式来部署了&#xff0c;需要使用 Prometheus 的服务发现。部署规划Pr…

EntityFramework Core 5.0 VS SQLBulkCopy

【导读】EF Core 5.0伴随着.NET 5.0发布已有一段时日&#xff0c;本节我们来预估当大批量新增数据时&#xff0c;大概是多少区间我们应该考虑SQLBulkCopy而不是EF CoreSQLBulkCopy早出现于.NET Framework 2.0&#xff0c;将数据批量写入利用此类毫无疑问最佳&#xff0c;虽其来…

小心使用 Task.Run 续篇

关于前两天发布的文章&#xff1a;为什么要小心使用 Task.Run&#xff0c;对文中演示的示例到底会不会导致内存泄露&#xff0c;给很多人带来了疑惑。这点我必须向大家道歉&#xff0c;是我对导致内存泄漏的原因没描述和解释清楚&#xff0c;也没用实际的示例证实&#xff0c;是…

java实用教程——组件及事件处理——设置组件的位置(相对于窗口具体位置和布局)

1&#xff1a; 相对于窗口的具体位置 关键点&#xff1a; JButton组件添加到JPanel时&#xff0c;如果想自己位置&#xff0c;需要对JPanel进行如下设置&#xff0c;才能自定义按钮位置 需要将组件添加到画板上去&#xff0c;才可以设置组件的相对具体位置 button1.setBounds…

usb接口定义引脚说明_PerfDogService使用说明

令牌申请教程&#xff1a;https://bbs.perfdog.qq.com/article-detail.html?id55安装包下载&#xff1a;https://perfdog.qq.com/sdk一、 概述PerfDog性能狗服务组件&#xff0c;用户可基于service组件二次开发自己PerfDog性能工具或自动化服务。本文档主要对PerfDogService提…

java实用教程——组件及事件处理——布局管理(五种)

1.流式布局FlowLayout public void pack()调整此窗口的大小&#xff0c;以适合其子组件的首选大小和布局。如果该窗口或其所有者仍不可显示&#xff0c;则两者在计算首选大小之前变得可显示。在计算首选大小之后&#xff0c;将会验证该Window。窗口自动适应大小&#xff0c;使…

个人博客前端模板_腾讯前端开发工程师,教你极速搭建一个个人博客网站

作者&#xff1a; bookerzhao&#xff0c;腾讯 CSIG web前端开发工程师Github 为开源项目提供了用于静态页面展示的 Pages 服务&#xff0c;很多开发者都在上面托管了自己的静态网站和博客&#xff0c;不少开源项目的案例和文档页面也采用了这种方式。不过由于 Pages 的 CDN 节…

云原生时代 给予.NET的机会

.NET诞生于与Java的竞争&#xff0c;微软当年被罚款20亿美元。Java绝不仅仅是一种语言&#xff0c;它是COM的替代者&#xff01;而COM恰恰是Windows的编程模型。而Java编程很多时候比C编程要容易的多&#xff0c;更致命的是他是跨平台的。微软所推行.NET战略&#xff0c;并且C#…

java实用教程——组件及事件处理——布局的一个小实例

import javax.swing.*; import java.awt.*;public class BasicComponentDemo {Frame frame new Frame("这里测试基本组件");//定义一个按钮Button ok new Button("确认");//定义一个复选框组CheckboxGroup cbg new CheckboxGroup();//定义一个单选框&am…

非极大值抑制_非极大值抑制(non-maximum suppression)

摘自https://blog.csdn.net/qq_38906523/article/details/80195119摘自https://blog.csdn.net/xiexu911/article/details/80609298非极大值抑制NMS在目标检测&#xff0c;定位等领域是一种被广泛使用的方法。对于目标具体位置定位过程&#xff0c;不管是使用sliding Window还是…

TIOBE12月榜单:Java重回第二,Python有望四连冠年度语言

喜欢就关注我们吧&#xff01;文|白开水TIOBE 公布了 2020 年 12 月的编程语言排行榜。TIOBE 将在下个月公布 2020 年的年度编程语言&#xff0c;一年内排名率增长最高的编程语言将获得这一称号。目前&#xff0c;Python 以 1.90% 数据遥遥领先。其次分别是 C&#xff08;0.71%…

excel怎么在柱状图上加超链_如何让你的年终总结更符合领导心意,高薪员工必备的excel技能...

临近年底了&#xff0c;好多人都在写年终总结了&#xff0c;惯有的模式就是写一写这一年都做了哪些工作&#xff0c;有什么成绩&#xff0c;未来将如何完善等等......但是如何反应自己一年以来的成绩呢&#xff0c;如果单单是以文字的形式表述怕是不能让领导满意&#xff0c;甚…

java实用教程——组件及事件处理——对话框(dialog)

对话框&#xff1a; import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import java.awt.*; import java.awt.event.*;public class DialogDemo1 {public static void main(String[] args) {Frame frame new Frame("这里测试Dialog");Di…

Vue 凭什么成为 2020 年的一匹黑马

Vue 在前端开发中的火爆程度远超 React 和 Angular &#xff0c;无论是 BAT 等大厂&#xff0c;还是小型初创公司&#xff0c;Vue 都有着广泛的应用&#xff0c;其相关技术原理也是面试的必考知识点。Vue 的优势太过明显&#xff1a;基于 HTML 的模板语法&#xff0c;响应式的更…

python——学习笔记1

推荐阅读&#xff1a; 爆肝十二万字《python从零到精通教程》 Python菜鸟教程 1.python 的输入输出&#xff1a; 输入&#xff1a;input() 输出&#xff1a;print() 输出不换行&#xff1a;print(x,end"") 数据要和字符串同时输出的时候需要将数据转化为字符串类…

开源C# Winform控件库《SunnyUI》强力推荐

本站(https://dotnet9.com)曾介绍过一款Winform开源控件库《HZHControls》&#xff0c;文章发布后不少朋友热情的咨询相关控件库信息&#xff0c;由此看来Winform在大家心中的地位还是挺高的。今天小编再分享一款新鲜出炉的 Winform 控件库库——SunnyUI&#xff0c;一起跟 Dot…

python——学习笔记2

python的数据结构 字符串&#xff1a; 字符串小写转大写&#xff1a; 字符串大写转小写&#xff1a; 删除空格&#xff1a; 空白是实际文本之前和/或之后的空间&#xff0c;通常您想删除这个空间。 strip()方法从开头或结尾删除任何空格&#xff1a; 替换字符串: replace()方…