PDA

View Full Version : اضابه کردن image به فریمی که با استفاده از توابع آماده ایجاد شده است.



java88
چهارشنبه 02 آذر 1390, 22:21 عصر
با سلام
دوستان, من یه پنجره تو جاوا با استفاده از اون امکانات آماده ای که هست درست کردم (یعنی همون جا که مثلا میخوایم برچسب اضافه کنیم lable روش کلیک میکنیم میکشیم تو پنجره میذایم)
الان میخوایم تو اون فریم یه عکسی اضافه کنم ولی نمیتونم .
اگه میشه کمکم کنید :لبخندساده:

spiderman200700
پنج شنبه 03 آذر 1390, 00:47 صبح
شما اول باید یه Label اضافه کنی.بعدش روی Label راست کلیک کنی و properties رو انتخاب کنی.
توی پنجره ای که باز میشه،داخل تب properties یه سطر وجود داره به نام icon. سمت راست این سطر یه دکمه هست که باید انتخابش کنی.
توی پنجره ای که باز میشه، میتونی از قسمت External Image ، یا از حالت های دیگه،عکست رو به Label اضافه کنی.

خوش باشی.

java88
پنج شنبه 03 آذر 1390, 11:25 صبح
شما اول باید یه Label اضافه کنی.بعدش روی Label راست کلیک کنی و properties رو انتخاب کنی.
توی پنجره ای که باز میشه،داخل تب properties یه سطر وجود داره به نام icon. سمت راست این سطر یه دکمه هست که باید انتخابش کنی.
توی پنجره ای که باز میشه، میتونی از قسمت External Image ، یا از حالت های دیگه،عکست رو به Label اضافه کنی.

خوش باشی.

ممنون دوست عزیز که کمکم کردید . یه سوال دیگه هم داشته این image رو که من اضافه کردم الان میخوام روی این عکسه یه کلمه ای بنویس ,میشه نوشت ؟ چطوری؟
ممنون

spiderman200700
پنج شنبه 03 آذر 1390, 13:08 عصر
آره میشه.ولی شاید واست کمی پیچیده باشه.در هر صورت اینم یه مثال کامل برای این کار:

//Adding text to Image

public class Test extends JFrame
{
String s;
ImageIcon img;
Image image;
JPanel p;
JLabel label;
JLabel text;
public Test()
{
s = "Hi";
Font f = new Font("Serif",Font.BOLD,12);
text = new JLabel("Hi");
text.setFont(f);

MediaTracker mt = new MediaTracker(this);
image = Toolkit.getDefaultToolkit().createImage("test.jpg");
mt.addImage(image,0);
try{mt.waitForID(0);}catch(InterruptedException ie){}
int width = image.getWidth(null);
int height = image.getHeight(null);
BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bimg.createGraphics().drawImage(image, 0, 0, this);
bimg.getGraphics().setFont(f);
bimg.getGraphics().drawString(s,250,100);

img = new ImageIcon(bimg);
label = new JLabel(img);
p = new JPanel();
p.add(label);
getContentPane().add(p);
}
public static void main(String args[])
{
Test tt = new Test();
tt.setDefaultCloseOperation(EXIT_ON_CLOSE);
tt.setSize(750,600);
tt.setVisible(true);
}
}



اگه این کد رو متوجه بشی نتنها متن،بلکه عکس های دیگه و حتی شکل های هندسی هم میتونی روی عکست رسم کنی.
امیدوارم به دردت بخوره.
موفق باشی.

java88
جمعه 04 آذر 1390, 12:55 عصر
خیلی ممنون دوست عزیز که پاسخ ام رو دادی
فقط یه مشکل که دارم اینه که من که مثلا jlabel یا textfield های آماده جاوا استفاده میکنم وقتی می رم به کدش نمی دونم کجا اضافه کنم .اگه میشه کمکم کنی :خجالت:

spiderman200700
شنبه 05 آذر 1390, 14:42 عصر
مهم نیست که از کامپوننت های آماده ی NetBeans استفاده میکنی.کافیه فقط اسم کامپوننتت رو بدونی.
من برات یه متد مینویسم که JLabelت رو بهش میدی و بعد از رسم یه نوشته روی عکس موجود در JLabel ی که گرفته ، اونو به عنوان یه JLabel جدید برمیگردونه.
اینم متد:

public JLabel CreateBufferedLabel(JLabel text) {
String s = "Hi";
Font f = new Font("Serif", Font.BOLD, 12);
text = new JLabel("Hi");
text.setFont(f);

MediaTracker mt = new MediaTracker(new JFrame());// اینجوری هم میتونی بنویسی
MediaTracker mt = new MediaTracker(this);
Image image = Toolkit.getDefaultToolkit().createImage("test.jpg");
mt.addImage(image, 0);
try {
mt.waitForID(0);
} catch (InterruptedException ie) {
}
int width = image.getWidth(null);
int height = image.getHeight(null);
BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bimg.createGraphics().drawImage(image, 0, 0, new JFrame());// اینجوری هم میتونی بنویسی
bimg.createGraphics().drawImage(image, 0, 0, this);
bimg.getGraphics().setFont(f);
bimg.getGraphics().drawString(s, 250, 100);

ImageIcon img = new ImageIcon(bimg);
return new JLabel(img);

}


حالا هر جا خواستی متد CreateBufferedLabel رو صدا بزنی اینجوری عمل کن.
فرض کن اسم Labelت lab باشه:

lab=CreateBufferedLabel(lab);

برای ست کردن دستی Image بر روی Label هم به این قسمت مراجعه کن.
هم اندازه کردن عکس یا lable (http://barnamenevis.org/showthread.php?314326-%D9%87%D9%85-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%D9%87-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B9%DA%A9%D8%B3-%DB%8C%D8%A7-lable)