عکس گرفتن از پنجره فعلی در جاوا
سلام و عرض ادب خدمت اساتید محترم بخصوص آقای عادلی فر
آقای عادلی فر عرضم به خدمتت چندتا سوال داشتم
1- برنامه ای نوشتم که از کل صفحه بعد از ثانیه تعیین شده عکس میگیره حالا میخوام بدونم چطور فقط از پنجره فعلی عکس گرفت؟
2- میشه توضیحاتی برای این موارد بدین؟
@SuppressWarnings("unused")
serialVersionUID = 5817812815585048335L
{@code}
{@docRoot}
{@linkplain}
{@link}
{@literal}
{@value}
3-جاوا اف ایکس فرقش با جاوا استاندارد چیه؟ آیا فقط تو طراحی UI باهم فرق دارن؟
4-یه پوشه به اسم images تو src ساختم ولی نتونستم با استفاده getResurce() ب عکساش دسترسی پیدا کنم
5- راهی هست که بشه برنامم minimize شده بعد از زمان خاصی restore بشه؟
با تشکر
3 پاسخ
ببینید به نظر من شما می تونید بدون یاد گرفتن swing برید دنبال FX و مشکلی نداره
در مورد سوال بعدی شما هم پوشه image رو اگر در داخل پوشه src درست کنید می تونید به راحتی به آن دسترسی داشته باشید البته دقت داشته باشید که ترتیب فایل ها و پوشه ها در آدرس دهی در جاوا با / انجام می شود نه با \\
سلام خیلی ممنون از جوابتون زحمت کشیدین
فقط در مورد جاوا افیکس یه ابهام مونده برام اونم اینکه بین swing و افیکس کدومو انتخاب کنم البته مطمنم افیکس قویتره ولی به نظرتون swing رو تا چه حدی دنبال کنم؟ یا کی برم سراغ افیکس؟
بعد سوال 4 منظورم این بود تو خود پروژم یه پوشه ساختم که عکس هارو اونجا قرار دادم
حالا وختی میخوام به عکس اون پوشه دسترسی پیدا کنم ارور میده
new ImageIcon(getClass().getResurce("images\\myIcon.png")
سلام به شما دوست عزیز
در مورد سوال اولتون بگم که اگه شما بخواهید که از یک قسمت مشخص از صفحه عکس بگیرید باید مختصات اون رو مشخص کنید. برای مثال اگه شما می خواهید از برنامه خودتون عکس بگیرید باید طول و عرض و مشخصات اون رو بدونید مانند کد زیر
public static void main(String[] args) { Rectangle screenRect = new Rectangle(10,10,100,200); BufferedImage capture; try { capture = new Robot().createScreenCapture(screenRect); ImageIO.write(capture, "bmp", new File("d:\\sdf.png")); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
حال به جای اعداد داده شده در قسمت rectangle شما باید مقادیر خود را قرار دهید که مختصات پنجره دلخواه شما است. مثلا اگر شما یک jframe داشته باشید و بخواهید از آن عکس بگیرید از کد زیر استفاده می کنید
Rectangle rec = jframe.getBounds();
در مورد سوال دوم شما SuppressWarnings به این معنی است که warningها یا همان هشدار هایی که در برنامه به ما نشان داده می شود غیر فعال شود. برای مثال اگر شما متغیری را تعریف کرده باشید ولی از آن استفاده نکرده باشید به شما هشدار داده می شود که این متغیر استفاده نشده است. ولی اگر از کد
@SuppressWarnings("unused")
استفاده کنید آن هشدار به شما نشان داده نخواهد شد.
کد serialVersionUID = 5817812815585048335L همان طور که در مطلبی که برای انواع داده ها در جاوا صحبت کردیم برای متغیر هایی که long هستند و برای این که تفاوت int و long مشخص شوند در مقدار دهی به متغیر های long یک حرف L هم قرار داده می شود.
بقیه قسمت هایی که نوشتید و بین {} قرار دارند در اصل کد اصلی زبان جاوا نیستند و جنبه کامنت و داکیومنت نویسی دارند. یعنی شما در کامنت از این مقادیر استفاده می کنید و کامپایلر آن را برای توضیحات استفاده می کند مثلا اگر در قسمت link به یک کلاس دیگر لینک داده باشید کامپایلر هنگام توضیحات کلاس به آن لینک می دهد.
در مورد سوال سومتون هم باید بگم که تقریبا همین است. جاوا FX یکی از تکنولوژی های جاوای استاندارد است که فقط بر روی ساختن برنامه هایی با رابط کاربری قوی با زبان جاوای استاندارد تاکید دارد و به شما امکاناتی می دهد ولی شما برای کار به همان زبان جاوا نیاز دارید.
سوال چهارم شما رو متوجه نشدم توی چه پروژه ای نتونستید دسترسی داشته باشید؟
در مورد سوال پنجم هم می تونید از کد زیر استفاده کنید
JFrame frame = new JFrame(...); // Show the frame frame.setVisible(true); // Sleep for 5 seconds, then minimize Thread.sleep(5000); frame.setState(java.awt.Frame.ICONIFIED); // Sleep for 5 seconds, then restore Thread.sleep(5000); frame.setState(java.awt.Frame.NORMAL);
در کد بالا اگر state را به Normal تغییر بدید Restore میشه و اگه به Iconified تغییر بدید minimize میشه.