View Full Version : سوال: چیدن یه Component در Frame با دادن مختصات(در تابع کتابخانه ای swing) ؟؟؟
mansoor69
چهارشنبه 01 دی 1389, 23:16 عصر
سلام
من می خوام یه component (مثلا یه دکمه) رو در یک فریم با دادن مختصات قرار بدم. بمن گفتن با
(component.setbouns (int x,int y
می تونم این کار رو انجام بدم اما وقتی برنامه رو run میکنم بازم دکمه ها وسط چین هستن.
فکر کنم مشکل از فریم باشه اما نمی دونم چه طوری این خاصیت فریم رو عوض کنم.
اگه کمک کنید ممنون می شم.
persianshadow
پنج شنبه 02 دی 1389, 09:00 صبح
ببینید JFrame ها از یه خاصیت مهم بهره میبرن به نام Layout Manager که این خاصیت تعیین میکنه عناصر یعنی همون کامپوننت ها کجای
صفحه نمایش داده بشن شما باید با این مبحث آشنا بشید و گرنه قرار دادن عناصر در صفحه شما رو آزار خواهد داد.
برای آشنایی با این مفهوم ابتدا این صفحه رو ببینید تا به شکل تصویری (http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html) با تمام Layout Manager ها آشنا بشید.
و برای به کار بستن این مفهوم این صفحه (http://download.oracle.com/javase/tutorial/uiswing/layout/using.html) را مطالعه کنید.
mansoor69
پنج شنبه 02 دی 1389, 10:52 صبح
ببینید JFrame ها از یه خاصیت مهم بهره میبرن به نام Layout Manager که این خاصیت تعیین میکنه عناصر یعنی همون کامپوننت ها کجای
صفحه نمایش داده بشن شما باید با این مبحث آشنا بشید و گرنه قرار دادن عناصر در صفحه شما رو آزار خواهد داد.
برای آشنایی با این مفهوم ابتدا این صفحه رو ببینید تا به شکل تصویری (http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html) با تمام Layout Manager ها آشنا بشید.
و برای به کار بستن این مفهوم این صفحه (http://download.oracle.com/javase/tutorial/uiswing/layout/using.html) را مطالعه کنید.
از پاسخ شما ممنونم اما
من با این Layout Manager تقریبا آشنا هستم ولی مشکل من اینه که خودم می خام با دادن مختصات به کامپوننت ها محل قرار گیریش رو مشخص کنم در صورتی که Layout Manager کامپوننت ها رو در جا های معین قرار می ده(یعنی اجازه نمی ده مثلا یه کامپوننت رو گوشه بالا سمت چپ صفحه بزاری یک رو وسط و یکی دیگر رو مثلا گوشه پایین سمت راست ) حالا اگه یکی از این Layout Manager ها می تونه این کار رو کنه بگید اگه نه بگید چطوری می تونم خودم مختصات بدم.
persianshadow
پنج شنبه 02 دی 1389, 11:22 صبح
بله شما میتونید LayoutManager رو null بدید و اصصلاحآ از NullLayout استفاده کنید.یعنی بنویسید :
setLayout(null);
persianshadow
پنج شنبه 02 دی 1389, 11:27 صبح
این هم یک مثال از NullLayout :
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class NullLayoutPane extends JPanel {
public NullLayoutPane() {
// Get rid of the default layout manager.
// We'll arrange the components ourselves.
this.setLayout(null);
// Create some buttons and set their sizes and positions explicitly
for (int i = 1; i <= 9; i++) {
JButton b = new JButton("Button #" + i);
b.setBounds(i * 30, i * 20, 125, 30); // use reshape() in Java 1.0
this.add(b);
}
}
// Specify how big the panel should be.
public Dimension getPreferredSize() {
return new Dimension(425, 250);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.getContentPane().add(new NullLayoutPane(), BorderLayout.CENTER);
// Finally, set the size of the main window, and pop it up.
frame.setSize(600, 400);
frame.setVisible(true);
}
}
mansoor69
پنج شنبه 02 دی 1389, 18:55 عصر
مرسی جوابم رو گرفتم.
منم می خواستم از layout manager استفاده نکنم چون کار رو محدود می کنه که باکدی که گفتید
تونستم این کارو انجام بدم.
mansoor69
پنج شنبه 02 دی 1389, 23:41 عصر
بله شما میتونید LayoutManager رو null بدید و اصصلاحآ از NullLayout استفاده کنید.یعنی بنویسید :
setLayout(null);
ببخشید حالا به مشکل دیگه برخوردم
وقتی layoutmanager رو null کردم دیگه jtextfeild رو نشون نمی ده
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.