PDA

View Full Version : سوال: ارور در تنظیم آیکن JLable به صورت افقی



svmone
جمعه 27 آذر 1394, 18:35 عصر
سلام

کد زیر رو نگاه کنید:

public static void main(String[] args) {
// TODO code application logic here
// ایجاد یک شی از کلاس فرم
JFrame mainFrame = new JFrame();

// به دست آوردن ارتفاع و عرض صفحه نمایش
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

// تنظیم اندازه فرم
mainFrame.setSize(screenSize);

// قرار دادن محل فرم در وسط صفحه نمایش
mainFrame.setLocationRelativeTo(null);

// ایجاد یک آیکن و مقدار دهی آن
ImageIcon image = new ImageIcon("C:\\Users\\Public\\Pictures\\Sample Pictures\\Koala.jpg");

// ایجاد یک لیبل و مقدار دهی آن با آیکن و تنظیم محل قرارگیری افقی آن
JLabel label = new JLabel((Icon)image, 10);

// افزودن لیبل به فرم
mainFrame.add(label);

// نمایش فرم
mainFrame.setVisible(true);
}

وقتی که یک شی از کلاس JLabel ایجاد میکنم و آرگومان دوم رو مثلا -10 میزارم ارور میده و نمیدونم دلیلش چیه، ممنون میشم راهنمایی کنید.

تصویر هم همون تصویر کوالا در پوشه Pictures ویندوز هستش :افسرده:

vahid-p
جمعه 27 آذر 1394, 22:34 عصر
پارامتر Horizontal Alignment مقادیر عددی مشخصی میگیره. اینطور نیست که هر عددی بخواید قرار بدید. این چپ چین، راست چین بودن رو مشخص میکنه و مشخصه هر عددی نمیتونه باشه.
شما برای چنین پارامترهایی از عدد استفاده نکنید بلکه از داکیومنت استفاده کنید و از رشته هایی که معادل اعداد ثابت هستند استفاده کنید.
مثلا برای این پرامتر مقادیر زیر رو دارید:
LEFT SwingConstants.LEFT
CENTER SwingConstants.CENTER
RIGHT SwingConstants.RIGHT
LEADING SwingConstants.LEADING
TRAILING SwingConstants.TRAILING
اگر از IDE مثل Netbeans و Eclipse و Intellij استفاده میکنید راحت میتونید پیدا کنید کانستراکتور چی رو میخواد. با گرفتن Ctrl و کلیک روی JLabel خواهید دید و بعد بر روی this به بخشی میرید که از setHorizontalAlignment استفاده کرده و با کلیک بر روی اون بالای متد set .... توضیحاتی که فرستادم نوشته شده. عدد 10 که شما وارد کردید هم مربوط به LEADING است یعنی بر حسب زبان نوشته، چپ چین راست چین را انجام می دهد.
یعنی معادل کد شما می شود:

JLabel label = new JLabel((Icon)image, SwingConstants.LEADING);