编写一个Java多线程GUI程序(GUIThread.java),有两个按钮,点击第一个按钮、启动一个线程开始计时,并把

编写一个Java多线程GUI程序(GUIThread.java),有两个按钮,点击第一个按钮、启动一个线程开始计时,并把,第1张

你要的是这个吧:

import javaawtGridLayout;

import javaawteventActionEvent;

import javatextDateFormat;

import javautilDate;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJLabel;

public class GUIThread extends JFrame implements javaawteventActionListener{

private JButton jb1 = new JButton("计时");

private JButton jb2 = new JButton("当前时间");

private JLabel jl1 = new JLabel("");

private JLabel jl2 = new JLabel("");

public GUIThread(){

super("GUIThread");

thissetSize(300,200);

thissetLocation(400, 400);

thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

thissetLayout(new GridLayout(2,2));

thisjb1addActionListener(this);

thisjb2addActionListener(this);

thisadd(jb1);

thisadd(jl1);

thisadd(jb2);

thisadd(jl2);

thissetVisible(true);

}

public static void main(String[] args){

new GUIThread();

}

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Object jb = egetSource();

if(jb == jb1){

new TimingTime(jl1)start();

jb1setEnabled(false);

}else{

new NowTime(jl2)start();

}

}

}

class NowTime extends Thread{

private JLabel jl;

public NowTime(JLabel jl){

thisjl = jl;

}

@Override

public void run() {

// TODO Auto-generated method stub

while(true){

try {

sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

Date d = new Date() ;

thisjlsetText(dgetYear()+"-"+(dgetMonth()+1)+"-"+dgetDate()+" "+dgetHours()+":"+dgetMinutes()+":"+dgetSeconds());

}

}

}

class TimingTime extends Thread{

private JLabel jl;

private long l = new Date()getTime();

public TimingTime(JLabel jl){

thisjl = jl;

}

@Override

public void run() {

// TODO Auto-generated method stub

while(true){

try {

sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

int emp = 1000;

int i = (int) ((new Date()getTime() - l)/emp);

jlsetText(StringvalueOf(i));

}

}

}

效果图

参考代码

import javaawt;

import javaawtevent;

import javaxswing;

public class KeyFrame extends JFrame implements KeyListener{

JLabel jlkey;

public KeyFrame() {

jlkey = new JLabel("请输入字母或者数字,其他字符不显示");

add(jlkey);

addKeyListener(this);

setLayout(new FlowLayout());

setSize(260, 160);

setTitle("输入");

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

}

public static void main(String[] args) {

new KeyFrame();

}

public void keyTyped(KeyEvent e) {//敲击键盘

c=egetKeyChar();//得到键入的字符

repaint();//重绘

}

public void keyPressed(KeyEvent e) {//按下键盘

// c=egetKeyChar();

// repaint();

}

public void keyReleased(KeyEvent e) {//释放键盘

}

char c ;

@Override

public void paint(Graphics g) {

superpaint(g);

//如果只能显示输入的是字母或者数字,那么需要if判断下

if((c<='Z'&& c>='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){// 注意比较的是字符 '9' 和字符'0'

Font font = ggetFont();

gsetColor(ColorBLUE);

gsetFont(new Font(fontgetName(),fontgetStyle(),20));

gdrawString(c+"",100, 100); //绘制

}

}

}

package baidu;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJOptionPane;

public class QJButton extends JFrame{

private JButton jb;

public QJButton(){

jb = new JButton("点击");

thisadd(jb);

jbaddActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

Systemoutprintln("您好!");

JOptionPaneshowMessageDialog(QJButtonthis, "您好!","消息", JOptionPaneINFORMATION_MESSAGE);

}

});

thissetSize(100,100);

thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

thissetVisible(true);

}

public static void main(String[] args) {

new QJButton();

}

}

顺便做了个带d出对话框的,控制台也输出了

进口的javaawtBorderLayout;

进口javaawtGridLayout中;

进口javaawteventActionEvent;

进口javaawteventActionListener;

进口的javax。 swingJButton;

进口javaxswingJFrame中;

进口javaxswingJPanel;

进口javaxswingJTextField中;

/ /暂时不考虑这个问题甚至添加

/ /点的第二个 *** 作点的 *** 作员点运算符点=结果

公共类计算器实现的ActionListener {

> JTextField的JTF =新的JTextField(10);

私人布尔追加= FALSE;

私人字符串OP1 =“0”;

私人字符串运算符=“+”;

@覆盖

公共无效的actionPerformed(ActionEvent的E){

字符串COMN = egetActionCommand();。!

/ /处理数字

如果(“0123456789”的indexOf(COMN)= -1){

如果(追加){/ /追加

字符串温度= jtfgetText() ;

jtfsetText(温度+ COMN);

}其他{/ /替换

jtfsetText(COMN);

追加= TRUE;

/ /处理运营商

否则,如果(“+ - /”的indexOf(COMN)= -1){

OP1 = JTF。的getText();

运算符= COMN;

追加= FALSE;

的} else if(“=”的indexOf(COMN)= -1。){

字符串OP2 = jtfgetText();

双D1 = DoubleparseDouble(OP1);

双D2 = DoubleparseDouble(OP2);

如果(“+”等于( *** 作者)。){

D1 = D1 + D2;

}否则,如果(“ - ”等于( *** 作员)。){

D1 = D1 - D2;

}否则,如果(“”的equals( *** 作员)。){

D1 = D1 D2;

的} else if(“/”等于( *** 作者)。){

D1 = D1 / D2;

jtfsetText(D1 +“”);

追加= FALSE;

}否则,如果(等于(COMN)“。”){

字符串温度= jtfgetText();

如果(tempindexOf(“;”)== -1){

jtfsetText(温度+“。”);

追加= TRUE;

否则,如果(“+ / - ”的equals(COMN)){

字符串温度= jtfgetText();

如果(tempstartsWith(“-1”)){

JTF。的setText(tempsubstring(1));

}其他{

jtfsetText(“ - ”+温度);

否则,如果(“退格”。等于(COMN)){

字符串温度= jtfgetText();

如果(templength()> 0){

jtfsetText(tempsubstring(0,templength() - 1));

}

的} else if(“CE”等于(COMN)| |“C”等于(COMN)){

jtfsetText(“0”);

追加= FALSE;

公众计算器(){

JFrame的JF =新的JFrame(“计算器”);

jfadd(JTF,BorderLayoutNORTH);

字串[] S1 = {“退格”,“CE”,“C”,“+”,“7”,“8”,“9”,“/”,“4”,

“5”,“6”,“”,“1”,“2”,“3”,“ - ”,“0”,“+ / - ”,“”,。 “=”};

的JPanel JP =新的JPanel();

jfadd(JP,使用BorderLayoutCENTER);

网格布局GL =新的网格布局(5,4); jpsetLayout(GL);

JButton的[] JB =新的JButton [s1length];

为(int i = 0;我<s1length,我+ +){

JB [我] =新的JButton(S1由[i]);

jpadd(JB由[i]);。

JB [I] addActionListener方法,(这);

} jfadd(JP);

jtfsetEditable(假);

jfsetLocation(400,300);

jfpack();

jfsetResizable(假);/ /设置窗口不可改变

jfsetDefaultCloseOperation(jfEXIT_ON_CLOSE);

jfsetVisible(真);

公共静态无效的主要(字串[] args){

新的计算器();

这个函数比较简单,不知道能不能满足要求

原因:

JFrame的默认布局是BorderLayout  这是边界布局,边界布局分为东 南 西 北 中 五个部分

如果一个组件 你没有指定他的位置,那么默认是在中

BorderLayout

containeradd(jl,BorderLayoutCENTER);//BorderLayoutCENTER  放到中间,这个可以省略

containeradd(bl,BorderLayoutSOUTH);//放到南面

你的意思

containeradd(组件一);

containeradd(组件二);

两个组件都放到了中间那么第二个组件就会覆盖掉第一个组件

修改后的效果图

使用Font类

下边是例子

---------------------------------------------------------------------------------------------

import javaawtFont;

import javaxswingJFrame;

import javaxswingJLabel;

public class FontApp extends JFrame {

public FontApp() {

setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(400, 300);

setLocationRelativeTo(null);

setResizable(false);

getContentPane()setLayout(null);

JLabel lblNewLabel = new JLabel("a String size 18");

lblNewLabelsetFont(new Font(null, FontITALIC, 18));

lblNewLabelsetBounds(12, 30, 232, 29);

getContentPane()add(lblNewLabel);

JLabel lblNewLabel_1 = new JLabel("b String size 14");

lblNewLabel_1setFont(new Font(null, FontBOLD, 14));

lblNewLabel_1setBounds(12, 97, 232, 29);

getContentPane()add(lblNewLabel_1);

setVisible(true);

}

public static void main(String[] args) {

new FontApp();

}

}

工具/原料 Eclipse 方法/步骤 依次选择file--New--Project选项 选择java——>java project 在Project name后输入工程名 new——>package New——>Class 以上步骤全部完成后,就可以开始编写程序了。

以上就是关于编写一个Java多线程GUI程序(GUIThread.java),有两个按钮,点击第一个按钮、启动一个线程开始计时,并把全部的内容,包括:编写一个Java多线程GUI程序(GUIThread.java),有两个按钮,点击第一个按钮、启动一个线程开始计时,并把、JAVA程序设计,使用GUI界面、关于用JAVA创建一个GUI程序,单击窗体中的按钮时,在控制台显示“您好”。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9434327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存