70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

مشکل استفاده از JColorChooser در جاوا و قرار دادن برنامه در بوت

سلام خدمت اساتید محترم itpro ، سلام آقای عادلی سولاتی داشتم یک اینکه یه برنامه نوشتم میخوام هنگام بالا اومدن سیستم اجرا بشه؟ بعد تو یکی از برنامه هام با استفاده از JColorChooser و ختی رنگی رو تو برنامم انتخاب میکنم در همون لحضه اعمال نمیشه و باید برنامه رو دستی ریستارت کنم تا اعمال بشه ، از متد repaint هم استفاده کردم اما نشد ؟ چیکار کنم؟ بعد جدا از اینا چطوره میشه برناممو رستارت کنم و بعد دوباره اجرا بشه مث همون restart تو اکلیپس؟ ممنون

پرسیده شده در 1396/03/29 توسط

3 پاسخ

0

سلام خیلی ممنون از جوابتون

در اصل یه برنامه دارم میخوام کاربر وختی به تنظیمات رفت بتونه رنگ کل ui رو تغییر بده که از کلاس jcolorChooser استفاده کردم و و برای ذخیره تنظمات از کلاس Preferences استفاده کردم

private void setColor() throws Exception
	
	{
		
	    defaultColor = JColorChooser.showDialog(this, "Select Color", new Color(1, 178, 180));
	    if(defaultColor == null)
	    {
	    	defaultColor = new Color(preferences.getInt("RED", 0) , preferences.getInt("GREEN", 0) , preferences.getInt("BLUE", 0));
	    	
                //restartApplication();
	    }
	    else
	    {
	    	
	    
	        preferences.putInt("RED", defaultColor.getRed());
		preferences.putInt("GREEN", defaultColor.getGreen());
		preferences.putInt("BLUE", defaultColor.getBlue());	
		
               //restartApplication();
               
	
	    }
	
	}

و یه متد دیه برای برگرداندن رنگ رو ساختم

 private Color getTheme()
    {
		return defaultColor;
    }

حالا وختی رنگ رو انتخاب میکنم

فرضا :

refreshButton.setBackground(getTheme());

ولی در لحضه اعمال نمیشه و باید برنامه رو ریستارت کنم

البته هر وخت از کلاس Preferences استفاده میکنم این اخطار رو میده چرا؟

Jun 21, 2017 8:03:15 PM java.util.prefs.WindowsPreferences <init>

WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.

پاسخ در 1396/03/31 توسط
1

سلام به شما

برای تغییر رنگ باید متد repaint رو هم بعد از setBackground فراخوانی نمایید.

هشداری که گفتید برای این هست که برنامه نمی تونه یک کلید جدید در رجیستری ویندوز به وجود بیاره برای حل این مشکل با باز کردن برنامه regedit به رجیستری برید و در قسمت HKEYLOCALMACHINE\Software\JavaSoft یا HKEYLOCALMACHINE\Software\WOW6432Node\JavaSoft یک کلید جدید به نام prefs بسازید و یا یک فایل reg. بسازید و مقادیر زیر را درون آن بنویسید

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs]
پاسخ در 1396/04/01 توسط
1

سلام به شما دوست عزیز

شما رنگ چه کنترلی رو عوض کردید که نشد؟ اگه ممکنه کد اون قسمت رو قرار بدید

با استفاده از کد زیر می توانید برنامه جاوا را از داخل کد ریستارت کنید.

public void restartApplication()
{
  final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
  final File currentJar = new File(MyClassInTheJar.class.getProtectionDomain().getCodeSource().getLocation().toURI());

  /* is it a jar file? */
  if(!currentJar.getName().endsWith(".jar"))
    return;

  /* Build command: java -jar application.jar */
  final ArrayList<String> command = new ArrayList<String>();
  command.add(javaBin);
  command.add("-jar");
  command.add(currentJar.getPath());

  final ProcessBuilder builder = new ProcessBuilder(command);
  builder.start();
  System.exit(0);
}
پاسخ در 1396/03/30 توسط

پاسخ شما