الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى Gui

بدأه mr.beshoy في 21 أغسطس 2009 · 7 رد · 499 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هنا توجد بانل اسمها mainComponentPanel عليها

componentPanel & typePanel

المشكلة انى عاوز البانل typePanel

تكون تحت البانل componentPanel

هى تظهر صغيرة جدا جدا

أريدها تظهر بطول مناسب و عرض مناسب

و الهدف منها عندما اضغط على زرار الخط تظهر هذه البانل بها 3 انواع من الخطوط رفيع - سميك - سميك جدا

كما فى برنامج الرسام بتاع الوندوز

و جربت استعمل ال Box

لكن ما نفع الأمر

الكود هذا الإنترفيس فقط

--------------------------

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainPainter {

	private static final Dimension App_Dimension = new Dimension(600, 300);
	private JPanel mainPanel,mainComponentPanel,componentPanel,typePanel;
	private String[] buttonNames = {"line", "rect", "oval", "polygon", "eraser"};
	private JButton[] buttons;
	private String[] imageNames = {"line.png", "rect.png", "oval.png", "connected.png", "erase.png"};
	private ImageIcon[] imageIcons;
   // private ShapetTest drawPanel;

	public MainPainter() {
		intializePanels();
		intializeButtons();
		intializationIcons();
		new ShapetTest();

	}

	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.getContentPane().add(new MainPainter().getComponent());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(App_Dimension);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
		frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
	}

	private void intializePanels() {

		mainPanel = new JPanel(new BorderLayout());

		mainComponentPanel = new JPanel(new GridLayout(2, 1));
		mainComponentPanel.setBackground(Color.BLUE);
		mainComponentPanel.setPreferredSize(new Dimension(200, 100));

		componentPanel = new JPanel(new GridLayout(3,2));
		componentPanel.setBackground(Color.GREEN);

	 //   drawPanel = new ShapetTest();
	 //   drawPanel.setShapeTestEnum(ShapeTestEnum.LINE);
	 //   drawPanel.drawPanelColor();

		typePanel = new JPanel();
		typePanel.setBorder(BorderFactory.createEtchedBorder());
		typePanel.setBounds(10, 50, 50, 50);
		mainComponentPanel.add(typePanel);
	  //  mainPanel.add(drawPanel, BorderLayout.CENTER);
	}

	private void intializationIcons() {
		imageIcons = new ImageIcon[imageNames.length];
		for (int i = 0; i < imageNames.length; ++i) {
			imageIcons = new ImageIcon(getClass().getResource(imageNames));
		}
	}

	private void intializeButtons() {
		intializationIcons();
		MyActionListener myActionListener = new MyActionListener();
		buttons = new JButton[buttonNames.length];
		for (int i = 0; i < buttonNames.length; ++i) {
			buttons = new JButton(buttonNames);
			buttons.setToolTipText(buttonNames);
			buttons.addActionListener(myActionListener);
			componentPanel.add(buttons);
			mainComponentPanel.add(componentPanel);
		}
		mainPanel.add(mainComponentPanel, BorderLayout.WEST);
	}

	public JComponent getComponent() {
		return mainPanel;

	}

	class MyActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			if (e.getSource() == buttons[0]) {
	//			drawPanel.setShapeTestEnum(ShapeTestEnum.LINE);
			}
			if (e.getSource() == buttons[2]) {
	  //		  drawPanel.setShapeTestEnum(ShapeTestEnum.OVAL);
			}
		}
	}
}

شكراً

#2

استخدم null layout لكي تستطيع استخدام الدالة setBounds

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

مش عاوزة تتحرك سم من مكانها :

typePanel = new JPanel();
		typePanel.setLayout(null);
		typePanel.setBackground(Color.BLUE);
		typePanel.setBorder(BorderFactory.createEtchedBorder());
		typePanel.setBounds(20, 50, 150, 50);
		mainComponentPanel.add(typePanel);

انا عاوزها تكون تحت البانل الى عليها الزراير

#4

يا بيشوي null layout للحاوية container

التي تحتوي المكون typePanel

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

تمام ياعلاء

بس بردو فى مشكلة أن البانل الى عليها الزراير اختفت ...

 private void intializePanels() {

		mainPanel = new JPanel(new BorderLayout());

		mainComponentPanel = new JPanel();
		mainComponentPanel.setLayout(null);
		mainComponentPanel.setBackground(Color.BLUE);
		mainComponentPanel.setPreferredSize(new Dimension(200, 100));

		componentPanel = new JPanel(new GridLayout(3,2));
		componentPanel.setBackground(Color.GREEN);


		typePanel = new JPanel();
		typePanel.setBorder(BorderFactory.createEtchedBorder());
		typePanel.setBounds(30, 200, 100, 50);
		mainComponentPanel.add(typePanel););
	}

 private void intializeButtons() {
		MyActionListener myActionListener = new MyActionListener();
		buttons = new JButton[buttonNames.length];
		for (int i = 0; i < buttonNames.length; ++i) {
			buttons = new JButton(buttonNames);
			buttons.setToolTipText(buttonNames);
			buttons.addActionListener(myActionListener);
			componentPanel.add(buttons);
			mainComponentPanel.add(componentPanel);
		}
		mainPanel.add(mainComponentPanel, BorderLayout.WEST);
	}
#6

بما أنك حولت mainPanel إلى null layout

فيجب كل المكونات components التي عليها أن تستخدم الدالة setBounds

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

فعلاً لازم كل المكونات تستعمل SetBound

تمام اشتغلت كويس

:lol:

شكراً

#8

الحمد لله رب العالمين

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة