انا استخدمت ال JFrame لعمل نافذة ولكن دائما تطلع ف الركن العلوى من الشاشة كيف احدد مكانها؟
JFrame
Assuming that your JFrame is called frame:
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);دا ال frame الى انا كتبته
import javax.swing.*;
public class firstFrame extends JFrame
{
public JFrame form;
public JPanel panel;
public JMenuBar menubar;
public JMenu filemenu,editmenu,viewmenu,windowsmenu,helpmenu;
public JMenuItem openmenu,closemenu,savemenu,saveAsMenu,saveMenu,aboutmenu,undomenu,statusbarmenu,arrangemenu;
public firstFrame()
{
//build the windows frame
panel=new JPanel(true);
form=new JFrame("ahabdeen first windows");
form.getContentPane().add("Center", panel);
form.setVisible(true);
form.setSize(300,300);
form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
//build the Menu frame
menubar=new JMenuBar();
filemenu=new JMenu("File");
editmenu=new JMenu("Edit");
viewmenu=new JMenu("View");
windowsmenu=new JMenu("Windows");
helpmenu=new JMenu("Help");
openmenu=new JMenuItem("Open");
closemenu=new JMenuItem("Close");
savemenu=new JMenu("Save");
saveAsMenu=new JMenuItem("Save as");
saveMenu=new JMenuItem("Save...");
filemenu.add(openmenu);
filemenu.addSeparator();
savemenu.add(saveMenu);
savemenu.add(saveAsMenu);
savemenu.add(saveAsMenu);
filemenu.add(savemenu);
filemenu.addSeparator();
filemenu.add(closemenu);
aboutmenu=new JMenuItem("About");
helpmenu.add(aboutmenu);
undomenu=new JMenuItem("Undo");
editmenu.add(undomenu);
statusbarmenu=new JMenuItem("status bar");
windowsmenu.add(statusbarmenu);
arrangemenu=new JMenuItem("Arrange");
viewmenu.add(arrangemenu);
menubar.add(filemenu);
menubar.add(editmenu);
menubar.add(viewmenu);
menubar.add(windowsmenu);
menubar.add(helpmenu);
form.setJMenuBar(menubar);
}
public static void main(String[]args)
{
new firstFrame();
}
}و ال code الى انت كتبته فى حطأ

<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
import java.awt.*;
import javax.swing.*;
public class FirstFrame extends JFrame
{
public JFrame form;
public JPanel panel;
public JMenuBar menubar;
public JMenu filemenu,editmenu,viewmenu,windowsmenu,helpmenu;
public JMenuItem openmenu,closemenu,savemenu,saveAsMenu,saveMenu,aboutmenu,undomenu,statusbarmenu,arrangemenu;
public FirstFrame()
{
//build the windows frame
panel=new JPanel(true);
form=new JFrame("ahabdeen first windows");
form.getContentPane().add("Center", panel);
form.setVisible(true);
form.setSize(300,300);
form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = form.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
form.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
//build the Menu frame
menubar=new JMenuBar();
filemenu=new JMenu("File");
editmenu=new JMenu("Edit");
viewmenu=new JMenu("View");
windowsmenu=new JMenu("Windows");
helpmenu=new JMenu("Help");
openmenu=new JMenuItem("Open");
closemenu=new JMenuItem("Close");
savemenu=new JMenu("Save");
saveAsMenu=new JMenuItem("Save as");
saveMenu=new JMenuItem("Save...");
filemenu.add(openmenu);
filemenu.addSeparator();
savemenu.add(saveMenu);
savemenu.add(saveAsMenu);
savemenu.add(saveAsMenu);
filemenu.add(savemenu);
filemenu.addSeparator();
filemenu.add(closemenu);
aboutmenu=new JMenuItem("About");
helpmenu.add(aboutmenu);
undomenu=new JMenuItem("Undo");
editmenu.add(undomenu);
statusbarmenu=new JMenuItem("status bar");
windowsmenu.add(statusbarmenu);
arrangemenu=new JMenuItem("Arrange");
viewmenu.add(arrangemenu);
menubar.add(filemenu);
menubar.add(editmenu);
menubar.add(viewmenu);
menubar.add(windowsmenu);
menubar.add(helpmenu);
form.setJMenuBar(menubar);
}
public static void main(String[]args)
{
new FirstFrame();
}
}اضف
import java.awt.*;
و لكن هناك مشكلة اخرى هى ان ال MenuBar لا تظهر عند بداية فتح النافذة
و تظهر بعد تكبير او تعديل حجم النافذة؟؟؟؟

<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
انا لاحظت هذا لكن اللي شد انتبهاي هو الـ JFrame
ليه مسوي اثنين من الـ JFrame ؟؟؟
import java.awt.*;
import javax.swing.*;
public class FirstFrame extends JFrame {
public JPanel panel;
public JMenuBar menubar;
public JMenu filemenu,editmenu,viewmenu,windowsmenu,helpmenu;
public JMenuItem openmenu,closemenu,savemenu,saveAsMenu,saveMenu,aboutmenu,undomenu,statusbarmenu,arrangemenu;
public FirstFrame() {
super("Frame");
setSize(300,300);
panel=new JPanel();
//build the Menu frame
menubar=new JMenuBar();
filemenu=new JMenu("File");
editmenu=new JMenu("Edit");
viewmenu=new JMenu("View");
windowsmenu=new JMenu("Windows");
helpmenu=new JMenu("Help");
openmenu=new JMenuItem("Open");
closemenu=new JMenuItem("Close");
savemenu=new JMenu("Save");
saveAsMenu=new JMenuItem("Save as");
saveMenu=new JMenuItem("Save...");
filemenu.add(openmenu);
filemenu.addSeparator();
savemenu.add(saveMenu);
savemenu.add(saveAsMenu);
savemenu.add(saveAsMenu);
filemenu.add(savemenu);
filemenu.addSeparator();
filemenu.add(closemenu);
aboutmenu=new JMenuItem("About");
helpmenu.add(aboutmenu);
undomenu=new JMenuItem("Undo");
editmenu.add(undomenu);
statusbarmenu=new JMenuItem("status bar");
windowsmenu.add(statusbarmenu);
arrangemenu=new JMenuItem("Arrange");
viewmenu.add(arrangemenu);
menubar.add(filemenu);
menubar.add(editmenu);
menubar.add(viewmenu);
menubar.add(windowsmenu);
menubar.add(helpmenu);
setJMenuBar(menubar);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
if(frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if(frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
show();
}
public static void main(String[]args) {
new FirstFrame();
}
}ناظر التغيرات الموجودة بالكود :)
super عشان اضيف العنوان
show تعمل عمل setVisiable لكن انا استعمل show دائما مع الـ Main Frame و الـ setVisiable مع الـ JInternalFrame و الـ JDailog
اسف بس فى شغلة تانية
ازاى اغير شكل ال JBuuton او احدد مكانه؟؟؟

<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
ftp://ftp.javasoft.com/docs/tut-swing.zip
هذا كتاب من موقع SUN راح ينفعك كثير :)
فى حاجات كتيرة
boxlayout ,flowlayout,springlayout,gridbaglayout,gridlayout,borderlayout
و مش عارف استخدمهم صح؟؟؟؟

<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
import javax.swing.*;
import java.awt.*;
class window extends JFrame
{
public window()
{
super("ahabdeen windows with java");
setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Container area=getContentPane();
FlowLayout flow=new FlowLayout(FlowLayout.LEFT);
JPanel panel1=new JPanel();
JPanel panel2=new JPanel();
JButton play=new JButton("Play");
JButton pause=new JButton("Pause");
GridLayout grid1=new GridLayout();
GridBagConstraints pos1=new GridBagConstraints();
pos1.gridx=10;
pos1.gridy=0;
GridBagLayout grid2=new GridBagLayout();
GridBagConstraints pos2=new GridBagConstraints();
pos2.gridx=100;
pos2.gridy=100;
panel1.setLayout(grid1);
panel2.setLayout(grid2);
panel1.add(play,pos1);
panel2.add(pause,pos2);
area.setLayout(flow);
area.add(panel1);
area.add(panel2);
setContentPane(area);
}
}
public class windows
{
public static void main(String args[])
{
window win=new window();
}
}دا ال code الى انا عملته بس الأزرار دائما تطلع على اليسار و ليس ف المكان المحدد

<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
FlowLayout flow=new FlowLayout(FlowLayout.LEFT);
انت حددت هذا الشئ من السطر السابق
ما رايك بهذا
import javax.swing.*;
import java.awt.*;
class window extends JFrame
{
public window()
{
super("ahabdeen windows with java");
setSize(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Container area=getContentPane();
JButton play=new JButton("play");
JButton pause=new JButton("pause");
area.setLayout(null);
area.add(play);
area.add(pause);
setContentPane(area);
Insets inset=area.getInsets();
play.setBounds(10+inset.left,5+inset.top,90,25);
pause.setBounds(110+inset.left,500+inset.top,90,25);
}
}
public class windows
{
public static void main(String args[])
{
window win=new window();
}
}
<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
رأيي بايش بالضبط ؟؟
انا ما استخدمت setBounds بحياتي كلها
و كيف تستخدم setBounds بشكل صحيح ؟؟؟
انا احاول اتعلم .. لكن مش عارف كيف اضبطها :(
ما هى دى المشكلة انك تعرف الا حداثى x و y لكل مكون ؟؟؟
بس اكيد فى طريقة اسهل لوضع المكونات كما تريد!!!!

<marquee>
مش موجود بصفة دايمة للامتحانات
</marquee>
انا راح اكتب درس عن هذا الموضوع،، لكن بعد اسبوع من الآن، ان شاء الله
هذا الموضوع مغلق.