你要的是这个吧:
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程序,单击窗体中的按钮时,在控制台显示“您好”。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)