نمایش نتایج 1 تا 23 از 23

نام تاپیک: بدون background کردن panel!

  1. #1

    Question بدون background کردن panel!

    سلام به دوستان
    من میخوام یک پنل رو کریستالی کنم
    به صورتی که اون قسمت سفیدی که داره ساعت رو نشون میده!
    از بین بره و انگار که ساعت داره مستقیما روی طرح چوب چاپ میشه!!!
    مرسی :)
    عکسو attach کردم ببینین7-22-2014 10-53-25 PM.jpg

  2. #2
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: بدون background کردن panel!

    عدد 1 دلخواهه. از 0 تا 255 میتونید قرار بدید. که میزان Transparency رو مشخص میکنه. بهتره عدد 1 رو انتخاب کنید و شفافه ولی به پشت پنل دسترسی نیست و مثلا کلیک و... نمیشه.اما اگر 0 باشه، اونوقت به زمینه دسترسی دارید، مثلا کلیک و ... امکانپذیره. یعنی با اینکه برنامه فعاله و بالاست، ولی شما به برنامه های پشت اون هم دسترسی خواهید داشت.
    اعداد دیگه که RGB است، هم رنگ رو مشخص میکنه که وقتی کاملا شفاف باشه دیگه رنگش مهم نیست.


    JPanel panel=new JPanel();
    panel.setBackground(new Color(0, 0, 0, 1));

  3. #3

    نقل قول: بدون background کردن panel!

    -----------------
    آخرین ویرایش به وسیله Ebrahimkh : پنج شنبه 02 مرداد 1393 در 16:14 عصر

  4. #4
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: بدون background کردن panel!

    میتونید کد برنامه رو بزارید؟ ساعت رو تو چی نشون میدین؟ JTextField یا JLabel یا ...؟ اگه JLabel باشه مشکلی نباید پیش بیاد ولی اگر توی JPanel انداخته باشی همونطور که vahid-p گفت بهترین راه همینه که مقدار alpha رو 0 یا 1 بزاری تا حالت transparency داشته باشه ولی چه کاریه؟ بندازی تو JPanel دوباره JLabel بزاری؟؟؟...

  5. #5

    نقل قول: بدون background کردن panel!

    پروژه رو کامل گذاشتم براتون بچه ها ممنون از همتون!!

    /*
    * 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>
    }


    }

  6. #6
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: بدون background کردن panel!

    کاملا طبیعیه که این طوری بشه چون شما 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 صبح

  7. #7
    مدیر بخش آواتار dasssnj
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    Esfahan
    پست
    1,022

    نقل قول: بدون background کردن panel!

    اونی که شما گذاشتی نزدیک 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

  8. #8

    نقل قول: بدون background کردن panel!

    dasssnj
    مرسی فقط توی خط های 35و167و187 خطا دارم و netBeans راه حلی نمیده!!
    دوم این که علامت (<-) این رو من تاحالا استفاده نکردم میشه بگی چیه!؟؟!
    و این که از صفها دقیقا چه استفاده ای کردی!؟!؟
    و کلا ی توضیح بدی ببینم چیکار کردی!! این موضوعم خیلی مهم بود اما نمیدونستم مشکل کارم از کجاست!!
    اگر برام توضیح بدی واقعا ممنوون میشم :)

  9. #9
    کاربر دائمی آواتار ahmad.mo74
    تاریخ عضویت
    مرداد 1393
    محل زندگی
    تهران
    پست
    437

    نقل قول: بدون background کردن panel!

    آقای dassnj من با بقیه کد های ایشون کاری نداشتم فقط جاهایی که مربوط به سوالشون میشد رو تغییر دادم...یا علی

  10. #10

    نقل قول: بدون background کردن panel!

    علامت (<-) این رو من تاحالا استفاده نکردم میشه بگی چیه!؟؟!
    اون بخش یه قابلیت جدید Java 8 هستش به اسم Lambda Expression یا عبارت لاندا. که توی خیلی از زبون های دیگه هم از قبل بود.
    اینو بخون.
    اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
    وبلاگ شخصی من: fadavi.net

    اینجا کمتر سر می‌زنم. (تلگرام من)

  11. #11
    مدیر بخش آواتار dasssnj
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    Esfahan
    پست
    1,022

    نقل قول: بدون background کردن panel!

    نقل قول نوشته شده توسط ahmad.mo74 مشاهده تاپیک
    آقای dassnj من با بقیه کد های ایشون کاری نداشتم فقط جاهایی که مربوط به سوالشون میشد رو تغییر دادم...یا علی
    بله ممنون.
    من چون به سرعت اجرای برنامه خیلی اهمیت میدم اولین چیزی که نظرمو جلب کرد افت سرعت بود.
    از شما و کدتون هم ممنون.

    Write Once, Run Anywhere

  12. #12
    مدیر بخش آواتار dasssnj
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    Esfahan
    پست
    1,022

    نقل قول: بدون background کردن panel!

    نقل قول نوشته شده توسط mr_stone مشاهده تاپیک
    dasssnj
    مرسی فقط توی خط های 35و167و187 خطا دارم و netBeans راه حلی نمیده!!
    دوم این که علامت (<-) این رو من تاحالا استفاده نکردم میشه بگی چیه!؟؟!
    و این که از صفها دقیقا چه استفاده ای کردی!؟!؟
    و کلا ی توضیح بدی ببینم چیکار کردی!! این موضوعم خیلی مهم بود اما نمیدونستم مشکل کارم از کجاست!!
    اگر برام توضیح بدی واقعا ممنوون میشم :)
    مشکلت به خاطر نصب نبودن جاوا 8 هست.
    شما یه حلقه ی بی نهایت درست کرده بودی که هیچ وقت پایان نمی یافت خوب باید هم افت سرعت می داشت . من فقط بین اجرای هر حلقه یک ثانیه برای ثانیه شمارت وقفه گذاشتم که اون یک ثانیه الکی حلقه تکرار نشه . همین.

    Write Once, Run Anywhere

  13. #13

    نقل قول: بدون background کردن panel!

    دوستان میشه کمک کنین!
    من جاوا 8 رو از oracle دانلود کردم اما نمیدونم چرا کار نمیکنه!! ینی توی programs and future هم هست اما netBeans 8 که دارم نمیشناستش! و الان با از امکانات جاوا8 نمیتونم استفاده کنم!! :(

  14. #14
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: بدون background کردن panel!

    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 صبح

  15. #15
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: بدون background کردن panel!

    شما میتونستید به جای Calendar از زمان System.currentTimeMillis() که تو قسمت تایمر استفاده کردم، استفاده کنید. راحتتره.

    ضمنا پیشنهادم اینه یه بار دیگه کل این برنامه رو بنویسید. این بار کلاس بندی کنید. کلاس BackGround رو در یک فایل دیگه قرار بدید، main رو در یک کلاس دیگه و... . محل محاسبات زمان و... تو یه کلاس انجام بشه، محیط گرافیکی در یک کلاس دیگه. تو کانستراکتور کدهای کمتری قرار بگیره و فیلدهای مثلا timeLabel و... به صورت لوکال ( مثلا اینجا در کانستراکتور ) تعریف نکنید و به صورت گلوبال باشه.
    یعنی کدتون تر و تمیز تر بشه و خودتون هم راحتتر بتونید گسترشش بدید و از کد دوستان هم مشخصه، به خاطر اینکه نخوان کد اولی رو دست بزنن، کلی دردسر کشیدن !

    دوستان میشه کمک کنین!
    من جاوا 8 رو از oracle دانلود کردم اما نمیدونم چرا کار نمیکنه!! ینی توی programs and future هم هست اما netBeans 8 که دارم نمیشناستش! و الان با از امکانات جاوا8 نمیتونم استفاده کنم!! :(
    اگر از نت بینز استفاده میکنید، باید نت بینزتون نسخه 8 باشه. خواستید netbeans 8 نصب کنید ( جاوا 8 هم همراشه ) : http://www.oracle.com/technetwork/ja...sp-142931.html

  16. #16

    نقل قول: بدون background کردن panel!

    به نظر من استفاده از 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

    اینجا کمتر سر می‌زنم. (تلگرام من)

  17. #17

    نقل قول: بدون background کردن panel!

    نقل قول نوشته شده توسط dasssnj مشاهده تاپیک
    مشکلت به خاطر نصب نبودن جاوا 8 هست.
    شما یه حلقه ی بی نهایت درست کرده بودی که هیچ وقت پایان نمی یافت خوب باید هم افت سرعت می داشت . من فقط بین اجرای هر حلقه یک ثانیه برای ثانیه شمارت وقفه گذاشتم که اون یک ثانیه الکی حلقه تکرار نشه . همین.

    الان من با وجود نصب بودن نت بینس و جاوا 8 نمیتونم از عبارت لاندا استفاده کنم!
    و همینطوری بدون عبارت لاندا دارم برنامه رو پیش میبرم!
    من همینطوری یک مقدار به نخ اجرا کننده ی ساعت sleep دادم اما همچنان 40-50% از CPU رو استفاده میکنه!!!
    میشه بیشتر وایم توضیح بدی و بگی باید بدون عبارت لاندا چیکار کنم!؟
    ممنونم

  18. #18
    مدیر بخش آواتار dasssnj
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    Esfahan
    پست
    1,022

    نقل قول: بدون background کردن panel!

    نقل قول نوشته شده توسط mr_stone مشاهده تاپیک
    الان من با وجود نصب بودن نت بینس و جاوا 8 نمیتونم از عبارت لاندا استفاده کنم!
    و همینطوری بدون عبارت لاندا دارم برنامه رو پیش میبرم!
    من همینطوری یک مقدار به نخ اجرا کننده ی ساعت sleep دادم اما همچنان 40-50% از CPU رو استفاده میکنه!!!
    میشه بیشتر وایم توضیح بدی و بگی باید بدون عبارت لاندا چیکار کنم!؟
    ممنونم
    والا نمیدونم چرا لاندا کار نمی کنه. خب شما از همون anonymus inner class که قبلا استفاده می کردی استفاده کن

    Write Once, Run Anywhere

  19. #19
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: بدون background کردن panel!

    میشه بیشتر وایم توضیح بدی و بگی باید بدون عبارت لاندا چیکار کنم!؟
    دوست عزیز پست قبلیم دو تا کد گذاشتم که هیچ کدوم از عبارت لاندا استفاده نشده و با جاوا 7 ران میشه. از اون استفاده کنید و جواب سوالتون هم تو کدها موجوده

  20. #20

    نقل قول: بدون background کردن panel!

    نقل قول نوشته شده توسط vahid-p مشاهده تاپیک
    دوست عزیز پست قبلیم دو تا کد گذاشتم که هیچ کدوم از عبارت لاندا استفاده نشده و با جاوا 7 ران میشه. از اون استفاده کنید و جواب سوالتون هم تو کدها موجوده
    وحید جان ممنونم!! اما من ی راه حل واسه این جاوا8 میخوام! بای پخش mp3 و چندتا چیز دیگه که لازم دارم! باید از جاوا 8 استفاده کنم! اما نمیشه!
    اگر راه حلی بلد بودین واسه ی حلش بهم بگین! ممنون

  21. #21

    Thumbs up نقل قول: بدون background کردن panel!

    وحید جان ممنونم!! اما من ی راه حل واسه این جاوا8 میخوام! بای پخش mp3 و چندتا چیز دیگه که لازم دارم! باید از جاوا 8 استفاده کنم! اما نمیشه!
    اگر راه حلی بلد بودین واسه ی حلش بهم بگین! ممنون
    دوست عزیز نباید مشکلی وجود داشته باشه... به نظرم شما JDK1.8 رو به Netbeanse معرفی نکردی و هنوز داره از نسخه قبلی JDK استفاده میکنه.
    برای تغییر 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);
    }
    }

    موفق باشی.
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: png jpm.png‏ (40.8 کیلوبایت, 23 دیدار)
    اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
    وبلاگ شخصی من: fadavi.net

    اینجا کمتر سر می‌زنم. (تلگرام من)

  22. #22

    نقل قول: بدون background کردن panel!

    نقل قول نوشته شده توسط MohamadF مشاهده تاپیک
    دوست عزیز نباید مشکلی وجود داشته باشه... به نظرم شما JDK1.8 رو به Netbeanse معرفی نکردی و هنوز داره از نسخه قبلی JDK استفاده میکنه.
    برای تغییر 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);
    }
    }

    موفق باشی.


    ممنون بابت جوابت من یک عکس میذلرم از platform Manager که میبینی جاوا8 رو دارم به صورت Defulte اما مشکلم حل نشد
    جای دیگه ای هست بتونم درستش کنم!؟!؟
    یا اینکه من اینجا کار دیگه ای باید انجام بدم ؟؟؟8-7-2014 12-02-36 AM.png

  23. #23

    نقل قول: بدون background کردن panel!

    یا اینکه من اینجا کار دیگه ای باید انجام بدم ؟؟؟

    نه شما سعی کن اون برنامه کوچیکی که گفتم رو بنویسی و اجرا کنی. بعد Error توی پنجره Output رو اینجا کپی کن ببینیم مشکل کجاست!
    اگر به بهداشت و سلامت حیوانات علاقه دارید، از vetMD.ir دیدن کنید.
    وبلاگ شخصی من: fadavi.net

    اینجا کمتر سر می‌زنم. (تلگرام من)

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: چهارشنبه 25 مهر 1386, 11:37 صبح
  2. پاسخ: 1
    آخرین پست: سه شنبه 25 بهمن 1384, 01:21 صبح
  3. اداره دیتابیس بدون باز کردن صفحه ای
    نوشته شده توسط PrinceDotNet در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: یک شنبه 29 خرداد 1384, 10:03 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •