سلام به دوستان
من میخوام یک پنل رو کریستالی کنم
به صورتی که اون قسمت سفیدی که داره ساعت رو نشون میده!
از بین بره و انگار که ساعت داره مستقیما روی طرح چوب چاپ میشه!!!
مرسی :)
عکسو attach کردم ببینین7-22-2014 10-53-25 PM.jpg
سلام به دوستان
من میخوام یک پنل رو کریستالی کنم
به صورتی که اون قسمت سفیدی که داره ساعت رو نشون میده!
از بین بره و انگار که ساعت داره مستقیما روی طرح چوب چاپ میشه!!!
مرسی :)
عکسو attach کردم ببینین7-22-2014 10-53-25 PM.jpg
عدد 1 دلخواهه. از 0 تا 255 میتونید قرار بدید. که میزان Transparency رو مشخص میکنه. بهتره عدد 1 رو انتخاب کنید و شفافه ولی به پشت پنل دسترسی نیست و مثلا کلیک و... نمیشه.اما اگر 0 باشه، اونوقت به زمینه دسترسی دارید، مثلا کلیک و ... امکانپذیره. یعنی با اینکه برنامه فعاله و بالاست، ولی شما به برنامه های پشت اون هم دسترسی خواهید داشت.
اعداد دیگه که RGB است، هم رنگ رو مشخص میکنه که وقتی کاملا شفاف باشه دیگه رنگش مهم نیست.
JPanel panel=new JPanel();
panel.setBackground(new Color(0, 0, 0, 1));
-----------------
آخرین ویرایش به وسیله Ebrahimkh : پنج شنبه 02 مرداد 1393 در 16:14 عصر
میتونید کد برنامه رو بزارید؟ ساعت رو تو چی نشون میدین؟ JTextField یا JLabel یا ...؟ اگه JLabel باشه مشکلی نباید پیش بیاد ولی اگر توی JPanel انداخته باشی همونطور که vahid-p گفت بهترین راه همینه که مقدار alpha رو 0 یا 1 بزاری تا حالت transparency داشته باشه ولی چه کاریه؟ بندازی تو JPanel دوباره JLabel بزاری؟؟؟...
پروژه رو کامل گذاشتم براتون بچه ها ممنون از همتون!!
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package calender_panel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import static java.awt.Frame.ICONIFIED;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
* @author Danial
*/
public class CalenderFrame extends JFrame{
public CalenderFrame(){
setSize(new Dimension(450, 500));
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocation(500, 50);
BackGround bk = new BackGround();
add(bk);
}
class BackGround extends JPanel{
public Image backPic;
public BackGround(){
this.setBackground(new Color(0,0,0,125));//---------------------> for tranparenc the panel
try {
// setVisible(true);
// BufferedImage back = ImageIO.read(getClass().getResource(String.format( "/Files/a.jpg")));
// Image pic = temp.getScaledInstance(398, 403, Image.SCALE_SMOOTH);
// ImageIcon icon = new ImageIcon(pic);
// JLabel bckGrnd_Lbl = new JLabel((Icon) (icon));
// bckGrnd_Lbl.setOpaque(true);
// add(bckGrnd_Lbl);
backPic = ImageIO.read(getClass().getResource(String.format( "/Files/a.jpg")));
} catch (IOException ex) {
Logger.getLogger(CalenderFrame.class.getName()).lo g(Level.SEVERE, null, ex);
}
Clock ck = new Clock();
add(ck , BorderLayout.NORTH);
Month mon = new Month();
add(mon , BorderLayout.SOUTH);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// paint the background image and scale it to fill the entire space
g.drawImage(backPic, 0, 0, getWidth(), getHeight(), this);
}
}
class Clock extends JPanel{
public Clock(){
// this.setOpaque(false);//----------------------------------------------> darhale null kardane background
// this.setBackground(new Color(0,0,0,125)); //---------------------> for tranparenc the panel
setBackground(new Color(0, 0, 0, 1));
Thread threadClock = new Thread(new Runnable() {
@Override
public void run() {
// setPreferredSize(new Dimension(200, 80));
setBackground(new Color(0, 0, 0, 1));
setVisible(true);
Calendar cal = Calendar.getInstance();
cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println( sdf.format(cal.getTime()) ); // for testing.
JLabel timeLabel = new JLabel();
timeLabel.setFont(new Font("Segoe Print", Font.BOLD, 55));
// timeLabel.setBackground(Color.YELLOW);
timeLabel.setForeground(Color.BLACK);
timeLabel.setOpaque(true);
add(timeLabel);
while(true){
cal = Calendar.getInstance();
cal.getTime();
sdf = new SimpleDateFormat("HH:mm:ss");
// System.out.println( sdf.format(cal.getTime()) );
timeLabel.setText(sdf.format(cal.getTime()) );
}
}
});
threadClock.start();
}
}
class Month extends JPanel{
public Month(){
Thread threadMon= new Thread(new Runnable() {
@Override
public void run() {
JLabel mon_lbl = new JLabel(calenderSeter());
System.out.println(calenderSeter());
mon_lbl.setFont(new Font("Segoe Print", Font.BOLD, 55));
mon_lbl.setForeground(Color.red);
mon_lbl.setPreferredSize(new Dimension(300, 100));
mon_lbl.setMaximumSize(new Dimension(300, 100));
mon_lbl.setMinimumSize(new Dimension(300, 100));
mon_lbl.setOpaque(true);
add(mon_lbl);
// while(true){
// cal = Calendar.getInstance();
// cal.getTime();
// sdf = new SimpleDateFormat("HH:mm:ss");
//// System.out.println( sdf.format(cal.getTime()) );
// timeLabel.setText(sdf.format(cal.getTime()) );
// }
}
});
threadMon.start();
}
//<editor-fold defaultstate="collapsed" desc=" {CalenderSeter_F} ">
public String calenderSeter(){
String mahe_shamsi = "" ;
Scanner scan = new Scanner(System.in);
System.out.println("enter day");
int day_Of_Month = scan.nextInt();
System.out.println("enter mon");
int month = scan. nextInt();
// Calendar cal = Calendar.getInstance();
// int day_Of_Month = cal.get(Calendar.DAY_OF_MONTH);
// int month = cal.get(Calendar.MONTH);
// month ++;
System.out.println(day_Of_Month +" =is day ");
System.out.println(month +" =is month");
switch(month){
case 1 :
if(day_Of_Month >= 21){
mahe_shamsi="بهمن";
}
if(day_Of_Month <21){
mahe_shamsi = "دی";
}
break;
case 2 :
if(day_Of_Month >= 20){
mahe_shamsi="اسفند";
}
if(day_Of_Month <20){
mahe_shamsi = "بهمن";
}
break;
case 3 :
if(day_Of_Month >= 21){
mahe_shamsi="فروردین";
}
if(day_Of_Month <21){
mahe_shamsi = "اسفند";
}
break;
case 4 :
if(day_Of_Month >= 21){
mahe_shamsi="اردیبهشت";
}
if(day_Of_Month <21){
mahe_shamsi = "فروردین";
}
break;
case 5 :
if(day_Of_Month >= 22){
mahe_shamsi="خرداد";
}
if(day_Of_Month <21){
mahe_shamsi = "اردیبهشت";
}
break;
case 6 :
if(day_Of_Month >= 22){
mahe_shamsi="تیر";
}
if(day_Of_Month <22){
mahe_shamsi = "خرداد";
}
break;
case 7 :
if(day_Of_Month >= 23){
mahe_shamsi="مرداد";
}
if(day_Of_Month <22){
mahe_shamsi = "تیر";
}
break;
case 8 :
if(day_Of_Month >= 23){
mahe_shamsi="شهریور";
}
if(day_Of_Month <22){
mahe_shamsi = "مرداد";
}
break;
case 9 :
if(day_Of_Month >= 23){
mahe_shamsi="مهر";
}
if(day_Of_Month <22){
mahe_shamsi = "شهریور";
}
break;
case 10:
if(day_Of_Month >= 23){
mahe_shamsi="آبان";
}
if(day_Of_Month <21){
mahe_shamsi = "مهر";
}
break;
case 11:
if(day_Of_Month >= 22){
mahe_shamsi="آذر";
}
if(day_Of_Month <21){
mahe_shamsi = "آبان";
}
break;
case 12:
if(day_Of_Month >= 22){
mahe_shamsi="دی";
}
if(day_Of_Month <20){
mahe_shamsi = "آذر";
}
break;
}
System.out.println("mahe shamsi = " + mahe_shamsi);
System.out.println("***************finish********* *********");
return mahe_shamsi;
}
//</editor-fold>
}
}
کاملا طبیعیه که این طوری بشه چون شما clock رو دوباره انداختی تو یه پنل BackGround در حالی که شما backPic رو واسه پنل BackGround ست کردی...باید یه پنل داشته باشی که همه اینا توش باشه و فقط کافیه backPic رو واسه اون ست کنی و clock و ... هم JLabel باشه
EDIT:
/**
* @author avb
*/
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class CalendarFrame extends JFrame {
public CalendarFrame() {
setSize(new Dimension(450, 500));
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE);
setLocation(500, 50);
BackGround bk = new BackGround();
add(bk);
}
public static void main(String args[]) {
try {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
EventQueue.invokeLater(() -> new CalendarFrame().setVisible(true));
}
//
// private String calenderSetter() {
// String solarMonth = "";
// Scanner scan = new Scanner(System.in);
// System.out.println("enter day");
// int day_Of_Month = scan.nextInt();
// System.out.println("enter mon");
// int month = scan.nextInt();
// System.out.println(day_Of_Month + " =is day ");
// System.out.println(month + " =is month");
// switch (month) {
// case 1:
// if (day_Of_Month >= 21) {
// solarMonth = "بهمن";
// }
// if (day_Of_Month < 21) {
// solarMonth = "دی";
// }
// break;
// case 2:
// if (day_Of_Month >= 20) {
// solarMonth = "اسفند";
// }
// if (day_Of_Month < 20) {
// solarMonth = "بهمن";
// }
// break;
// case 3:
// if (day_Of_Month >= 21) {
// solarMonth = "فروردین";
// }
// if (day_Of_Month < 21) {
// solarMonth = "اسفند";
// }
// break;
// case 4:
// if (day_Of_Month >= 21) {
// solarMonth = "اردیبهشت";
// }
// if (day_Of_Month < 21) {
// solarMonth = "فروردین";
// }
// break;
// case 5:
// if (day_Of_Month >= 22) {
// solarMonth = "خرداد";
// }
// if (day_Of_Month < 21) {
// solarMonth = "اردیبهشت";
// }
// break;
// case 6:
// if (day_Of_Month >= 22) {
// solarMonth = "تیر";
// }
// if (day_Of_Month < 22) {
// solarMonth = "خرداد";
// }
// break;
// case 7:
// if (day_Of_Month >= 23) {
// solarMonth = "مرداد";
// }
// if (day_Of_Month < 22) {
// solarMonth = "تیر";
// }
// break;
// case 8:
// if (day_Of_Month >= 23) {
// solarMonth = "شهریور";
// }
// if (day_Of_Month < 22) {
// solarMonth = "مرداد";
// }
// break;
// case 9:
// if (day_Of_Month >= 23) {
// solarMonth = "مهر";
// }
// if (day_Of_Month < 22) {
// solarMonth = "شهریور";
// }
// break;
// case 10:
// if (day_Of_Month >= 23) {
// solarMonth = "آبان";
// }
// if (day_Of_Month < 21) {
// solarMonth = "مهر";
// }
// break;
// case 11:
// if (day_Of_Month >= 22) {
// solarMonth = "آذر";
// }
// if (day_Of_Month < 21) {
// solarMonth = "آبان";
// }
// break;
// case 12:
// if (day_Of_Month >= 22) {
// solarMonth = "دی";
// }
// if (day_Of_Month < 20) {
// solarMonth = "آذر";
// }
// break;
// }
// System.out.println("mahe shamsi = " + solarMonth);
// System.out.println("***************finish********* *********");
// return solarMonth;
// }
private class BackGround extends JPanel {
public Image backPic;
public BackGround() {
try {
backPic = ImageIO.read(getClass().getResource("/resource/1.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
JLabel timeLabel = new JLabel();
JLabel monLabel = new JLabel();
add(timeLabel, BorderLayout.NORTH);
add(monLabel, BorderLayout.SOUTH);
Thread threadClock = new Thread(() -> {
Calendar cal = Calendar.getInstance();
cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(cal.getTime()));
timeLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
timeLabel.setForeground(Color.BLACK);
while (true) {
cal = Calendar.getInstance();
cal.getTime();
sdf = new SimpleDateFormat("HH:mm:ss");
timeLabel.setText(sdf.format(cal.getTime()));
}
});
threadClock.start();
Thread threadMon = new Thread(() -> {
monLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
monLabel.setForeground(Color.red);
monLabel.setPreferredSize(new Dimension(300, 100));
monLabel.setMaximumSize(new Dimension(300, 100));
monLabel.setMinimumSize(new Dimension(300, 100));
//...
});
threadMon.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(backPic, 0, 0, getWidth(), getHeight(), this);
}
}
}
آخرین ویرایش به وسیله ahmad.mo74 : جمعه 03 مرداد 1393 در 02:20 صبح
اونی که شما گذاشتی نزدیک 50 درصد از cpu را اشغال کرده بود من یه تغییر کوچیک دادم که حد اکثر 5 درصد از cpu اشغال میشه ولی همون کارایی را داره:
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
public class CalendarFrame extends JFrame {
public CalendarFrame() {
setSize(new Dimension(450, 500));
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE);
setLocation(500, 50);
BackGround bk = new BackGround();
add(bk);
}
public static void main(String args[]) {
try {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
EventQueue.invokeLater(() -> new CalendarFrame().setVisible(true));
}
//
// private String calenderSetter() {
// String solarMonth = "";
// Scanner scan = new Scanner(System.in);
// System.out.println("enter day");
// int day_Of_Month = scan.nextInt();
// System.out.println("enter mon");
// int month = scan.nextInt();
// System.out.println(day_Of_Month + " =is day ");
// System.out.println(month + " =is month");
// switch (month) {
// case 1:
// if (day_Of_Month >= 21) {
// solarMonth = "بهمن";
// }
// if (day_Of_Month < 21) {
// solarMonth = "دی";
// }
// break;
// case 2:
// if (day_Of_Month >= 20) {
// solarMonth = "اسفند";
// }
// if (day_Of_Month < 20) {
// solarMonth = "بهمن";
// }
// break;
// case 3:
// if (day_Of_Month >= 21) {
// solarMonth = "فروردین";
// }
// if (day_Of_Month < 21) {
// solarMonth = "اسفند";
// }
// break;
// case 4:
// if (day_Of_Month >= 21) {
// solarMonth = "اردیبهشت";
// }
// if (day_Of_Month < 21) {
// solarMonth = "فروردین";
// }
// break;
// case 5:
// if (day_Of_Month >= 22) {
// solarMonth = "خرداد";
// }
// if (day_Of_Month < 21) {
// solarMonth = "اردیبهشت";
// }
// break;
// case 6:
// if (day_Of_Month >= 22) {
// solarMonth = "تیر";
// }
// if (day_Of_Month < 22) {
// solarMonth = "خرداد";
// }
// break;
// case 7:
// if (day_Of_Month >= 23) {
// solarMonth = "مرداد";
// }
// if (day_Of_Month < 22) {
// solarMonth = "تیر";
// }
// break;
// case 8:
// if (day_Of_Month >= 23) {
// solarMonth = "شهریور";
// }
// if (day_Of_Month < 22) {
// solarMonth = "مرداد";
// }
// break;
// case 9:
// if (day_Of_Month >= 23) {
// solarMonth = "مهر";
// }
// if (day_Of_Month < 22) {
// solarMonth = "شهریور";
// }
// break;
// case 10:
// if (day_Of_Month >= 23) {
// solarMonth = "آبان";
// }
// if (day_Of_Month < 21) {
// solarMonth = "مهر";
// }
// break;
// case 11:
// if (day_Of_Month >= 22) {
// solarMonth = "آذر";
// }
// if (day_Of_Month < 21) {
// solarMonth = "آبان";
// }
// break;
// case 12:
// if (day_Of_Month >= 22) {
// solarMonth = "دی";
// }
// if (day_Of_Month < 20) {
// solarMonth = "آذر";
// }
// break;
// }
// System.out.println("mahe shamsi = " + solarMonth);
// System.out.println("***************finish********* *********");
// return solarMonth;
// }
private class BackGround extends JPanel {
public Image backPic;
public BackGround() {
try {
backPic = ImageIO.read(getClass().getResource("/resource/1.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
JLabel timeLabel = new JLabel();
JLabel monLabel = new JLabel();
add(timeLabel, BorderLayout.NORTH);
add(monLabel, BorderLayout.SOUTH);
Thread threadClock = new Thread(() -> {
Calendar cal = Calendar.getInstance();
cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf.format(cal.getTime()));
timeLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
timeLabel.setForeground(Color.BLACK);
while (true) {
cal = Calendar.getInstance();
cal.getTime();
sdf = new SimpleDateFormat("HH:mm:ss");
timeLabel.setText(sdf.format(cal.getTime()));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
}
});
threadClock.start();
Thread threadMon = new Thread(() -> {
monLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
monLabel.setForeground(Color.red);
monLabel.setPreferredSize(new Dimension(300, 100));
monLabel.setMaximumSize(new Dimension(300, 100));
monLabel.setMinimumSize(new Dimension(300, 100));
//...
});
threadMon.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(backPic, 0, 0, getWidth(), getHeight(), this);
}
}
}
Write Once, Run Anywhere
dasssnj
مرسی فقط توی خط های 35و167و187 خطا دارم و netBeans راه حلی نمیده!!
دوم این که علامت (<-) این رو من تاحالا استفاده نکردم میشه بگی چیه!؟؟!
و این که از صفها دقیقا چه استفاده ای کردی!؟!؟
و کلا ی توضیح بدی ببینم چیکار کردی!! این موضوعم خیلی مهم بود اما نمیدونستم مشکل کارم از کجاست!!
اگر برام توضیح بدی واقعا ممنوون میشم :)
آقای dassnj من با بقیه کد های ایشون کاری نداشتم فقط جاهایی که مربوط به سوالشون میشد رو تغییر دادم...یا علی
اون بخش یه قابلیت جدید Java 8 هستش به اسم Lambda Expression یا عبارت لاندا. که توی خیلی از زبون های دیگه هم از قبل بود.علامت (<-) این رو من تاحالا استفاده نکردم میشه بگی چیه!؟؟!
اینو بخون.
اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: fadavi.net
اینجا کمتر سر میزنم. (تلگرام من)
Write Once, Run Anywhere
دوستان میشه کمک کنین!
من جاوا 8 رو از oracle دانلود کردم اما نمیدونم چرا کار نمیکنه!! ینی توی programs and future هم هست اما netBeans 8 که دارم نمیشناستش! و الان با از امکانات جاوا8 نمیتونم استفاده کنم!! :(
while (true) { cal = Calendar.getInstance();
cal.getTime();
sdf = new SimpleDateFormat("HH:mm:ss");
timeLabel.setText(sdf.format(cal.getTime()));
}
این حلقه مشخصه که سی پی یو زیادی رو میگیره. برای همین سی پی یو تا جایی که میتونه در ثانیه هی میاد زمان رو میگیره. کد dasssnj بهتره چون خودش تاخیر ایجاد میکنه.
البته شما میتونید به جای اینکار از یه Timer استفاده کنید و delay اش رو 1000 میلی ثانیه ( 100 میلی هم خوبه، حتی 1 میلی ثانیه تاخیر هم باعث میشه استفاده سی پی یو از مثلا 100 درصد به یکی دو در صد برسه ) قرار بدید که البته همین عملکرد Thread ای که نوشتید رو داره ولی خب Start و Stop کردن Timer ساده تره.
مثلا اینجوری از Timer که البته از کتابخونه Swing هست به این شکل استفاده میشه کرد ( Timer کتابخونه util یکم متفاوته و از TimerTask استفاده میکنه ) :
Timer timer = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timeLabel.setText(sdf.format(System.currentTimeMil lis()));
}
});
timer.start();
// timer.stop(); //to stop
راستی به جای استفاده از Lambda Expression میتونی مستقیم از Runnable استفاده کنی :
Thread t=new Thread(new Runnable() {
@Override
public void run() {
//کد رو اینجا قرار بده
}
});
اینم کدی که برای جاوا 7 هم جواب میده : ( تقریبا معادل کد بالا با اندکی تغییرات )
import java.awt.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import javax.imageio.ImageIO;
import javax.swing.*;
public class CalendarFrame extends JFrame {
public CalendarFrame() {
setSize(new Dimension(450, 500));
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE);
setLocation(500, 50);
BackGround bk = new BackGround();
add(bk);
bk.start();
}
public static void main(String args[]) {
try {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
new CalendarFrame().setVisible(true);
}
private class BackGround extends JPanel {
public Image backPic;
private JLabel timeLabel;
private JLabel monLabel;
private SimpleDateFormat sdf;
private Thread threadClock;
public BackGround() {
try {
backPic = ImageIO.read(getClass().getResource("/resource/1.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
timeLabel = new JLabel();
monLabel = new JLabel();
add(timeLabel, BorderLayout.NORTH);
add(monLabel, BorderLayout.SOUTH);
sdf = new SimpleDateFormat("HH:mm:ss");
// System.out.println(sdf.format(cal.getTime()));
timeLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
timeLabel.setForeground(Color.BLACK);
monLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
monLabel.setForeground(Color.red);
monLabel.setPreferredSize(new Dimension(300, 100));
monLabel.setMaximumSize(new Dimension(300, 100));
monLabel.setMinimumSize(new Dimension(300, 100));
threadClock = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
timeLabel.setText(sdf.format(System.currentTimeMil lis()));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
}
}
}
});
}
public void start() {
threadClock.start();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(backPic, 0, 0, getWidth(), getHeight(), this);
}
}
}
کدی که برای جاوا 7 هم جواب میده : ( با استفاده از Timer )
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.text.SimpleDateFormat;
import javax.imageio.ImageIO;
import javax.swing.*;
public class CalendarFrame extends JFrame {
public CalendarFrame() {
setSize(new Dimension(450, 500));
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE);
setLocation(500, 50);
BackGround bk = new BackGround();
add(bk);
}
public static void main(String args[]) {
try {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
new CalendarFrame().setVisible(true);
}
private class BackGround extends JPanel {
public Image backPic;
private JLabel timeLabel;
private JLabel monLabel;
private SimpleDateFormat sdf;
private Thread threadClock;
public BackGround() {
try {
backPic = ImageIO.read(getClass().getResource("/resource/1.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
timeLabel = new JLabel();
monLabel = new JLabel();
add(timeLabel, BorderLayout.NORTH);
add(monLabel, BorderLayout.SOUTH);
sdf = new SimpleDateFormat("HH:mm:ss");
// System.out.println(sdf.format(cal.getTime()));
timeLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
timeLabel.setForeground(Color.BLACK);
monLabel.setFont(new Font("MV Boli", Font.BOLD, 55));
monLabel.setForeground(Color.red);
monLabel.setPreferredSize(new Dimension(300, 100));
monLabel.setMaximumSize(new Dimension(300, 100));
monLabel.setMinimumSize(new Dimension(300, 100));
Timer timer = new Timer(100, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timeLabel.setText(sdf.format(System.currentTimeMil lis()));
}
});
timer.start();
// timer.stop(); //to stop
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(backPic, 0, 0, getWidth(), getHeight(), this);
}
}
}
آخرین ویرایش به وسیله vahid-p : شنبه 04 مرداد 1393 در 11:56 صبح
شما میتونستید به جای Calendar از زمان System.currentTimeMillis() که تو قسمت تایمر استفاده کردم، استفاده کنید. راحتتره.
ضمنا پیشنهادم اینه یه بار دیگه کل این برنامه رو بنویسید. این بار کلاس بندی کنید. کلاس BackGround رو در یک فایل دیگه قرار بدید، main رو در یک کلاس دیگه و... . محل محاسبات زمان و... تو یه کلاس انجام بشه، محیط گرافیکی در یک کلاس دیگه. تو کانستراکتور کدهای کمتری قرار بگیره و فیلدهای مثلا timeLabel و... به صورت لوکال ( مثلا اینجا در کانستراکتور ) تعریف نکنید و به صورت گلوبال باشه.
یعنی کدتون تر و تمیز تر بشه و خودتون هم راحتتر بتونید گسترشش بدید و از کد دوستان هم مشخصه، به خاطر اینکه نخوان کد اولی رو دست بزنن، کلی دردسر کشیدن !
اگر از نت بینز استفاده میکنید، باید نت بینزتون نسخه 8 باشه. خواستید netbeans 8 نصب کنید ( جاوا 8 هم همراشه ) : http://www.oracle.com/technetwork/ja...sp-142931.htmlدوستان میشه کمک کنین!
من جاوا 8 رو از oracle دانلود کردم اما نمیدونم چرا کار نمیکنه!! ینی توی programs and future هم هست اما netBeans 8 که دارم نمیشناستش! و الان با از امکانات جاوا8 نمیتونم استفاده کنم!! :(
به نظر من استفاده از javax.swing.Timer هیچی که نباشه استاندارد تره! این برنامه رو ببینید. شاید کمک کنه:
public final class ClockFrame extends JFrame {
ClockFrame() {
super("Digital Clock");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.CENTER));
final JLabel lblHour = new JLabel("00");
final JLabel lblMin = new JLabel("00");
final JLabel lblSec = new JLabel("00");
final Calendar cal = Calendar.getInstance();
add(lblHour);
add(new JLabel(" : "));
add(lblMin);
add(new JLabel(" : "));
add(lblSec);
// import javax.swing.Timer NOT java.util.Timer
Timer timer = new Timer(1000, (ActionEvent e) -> {
cal.add(Calendar.SECOND, 1);
lblHour.setText(Integer.toString(cal.get(Calendar. HOUR_OF_DAY)));
lblMin.setText(Integer.toString(cal.get(Calendar.M INUTE)));
lblSec.setText(Integer.toString(cal.get(Calendar.S ECOND)));
});
timer.setRepeats(true);
timer.setCoalesce(true);
timer.start();
pack();
}
public static void main(String[] args) {
new ClockFrame().setVisible(true);
}
}
آخرین ویرایش به وسیله محمد فدوی : شنبه 04 مرداد 1393 در 12:47 عصر
اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: fadavi.net
اینجا کمتر سر میزنم. (تلگرام من)
الان من با وجود نصب بودن نت بینس و جاوا 8 نمیتونم از عبارت لاندا استفاده کنم!
و همینطوری بدون عبارت لاندا دارم برنامه رو پیش میبرم!
من همینطوری یک مقدار به نخ اجرا کننده ی ساعت sleep دادم اما همچنان 40-50% از CPU رو استفاده میکنه!!!
میشه بیشتر وایم توضیح بدی و بگی باید بدون عبارت لاندا چیکار کنم!؟
ممنونم
دوست عزیز پست قبلیم دو تا کد گذاشتم که هیچ کدوم از عبارت لاندا استفاده نشده و با جاوا 7 ران میشه. از اون استفاده کنید و جواب سوالتون هم تو کدها موجودهمیشه بیشتر وایم توضیح بدی و بگی باید بدون عبارت لاندا چیکار کنم!؟
دوست عزیز نباید مشکلی وجود داشته باشه... به نظرم شما JDK1.8 رو به Netbeanse معرفی نکردی و هنوز داره از نسخه قبلی JDK استفاده میکنه.وحید جان ممنونم!! اما من ی راه حل واسه این جاوا8 میخوام! بای پخش mp3 و چندتا چیز دیگه که لازم دارم! باید از جاوا 8 استفاده کنم! اما نمیشه!
اگر راه حلی بلد بودین واسه ی حلش بهم بگین! ممنون
برای تغییر Platform از منوی File گزینه Project Properties رو انتخاب کن.
توی این پنجره و توی قسمت Run، دکمه ی Manage Platforms رو انتخاب کن. تصویر این دیالوگ توی سیستم خودم رو برات گذاشتم.
توی اینجا میتونی Platformهات رو مدیریت کنی و اگه Java 8 رو نداری اون رو اضافه کنی و به عنوان JDK مورد استفاده ی پروژه ت معرفیش کنی.
بعد از اینکه اینکار رو کردی (یا اگه از اول JDK1.8 معرفی شده بود) یه برنامه ساده مثل این بنویس و اگه خطایی داد متن اون خطا رو بگو تا کمکت کنیم:
public class JdkTest {
public static void main(String[] args) {
java.util.ArrayList<Integer> list = new java.util.ArrayList<>(4);
list.add(2);
list.add(3);
list.add(5);
list.add(7);
list.forEach(System.out::println);
}
}
موفق باشی.
اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: fadavi.net
اینجا کمتر سر میزنم. (تلگرام من)
ممنون بابت جوابت من یک عکس میذلرم از platform Manager که میبینی جاوا8 رو دارم به صورت Defulte اما مشکلم حل نشد
جای دیگه ای هست بتونم درستش کنم!؟!؟
یا اینکه من اینجا کار دیگه ای باید انجام بدم ؟؟؟8-7-2014 12-02-36 AM.png
یا اینکه من اینجا کار دیگه ای باید انجام بدم ؟؟؟
نه شما سعی کن اون برنامه کوچیکی که گفتم رو بنویسی و اجرا کنی. بعد Error توی پنجره Output رو اینجا کپی کن ببینیم مشکل کجاست!
اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
وبلاگ شخصی من: fadavi.net
اینجا کمتر سر میزنم. (تلگرام من)