السلام عليكم
سابقا وفي موضوع سابق طرحت موضوع لكن اعتقد انه الكود كان معقد جدا لذلك لم يكن من السهل هضم السؤال
ولعدم تجاوزي للعقبة التي انا بها قررت ان ابني كود بسيط وسهل وبدائي جداً واشرح به مشكلتي, فلنفرض الكود التالي:
import java.awt.*;
import javax.swing.*;
public class DrawTest extends JPanel{
private JScrollBar jscrbHort = new JScrollBar(JScrollBar.HORIZONTAL);
private JScrollBar jscrbVert = new JScrollBar(JScrollBar.VERTICAL);
private int x = 50;
private int y = 5;
private int PIX = 20;
private int PIY = 40;
public static void main (String[] args){
DrawTest draw = new DrawTest();
JFrame frm = new JFrame("Line");
frm.setSize(1200, 500);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.add(draw);
frm.setVisible(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - frm.getWidth())/2;
int y = (screenSize.height - frm.getHeight())/2;
frm.setLocation(x, y);
}
protected void paintComponent(Graphics g ) {
super.paintComponents(g);
g.drawLine(PIX, y*PIY, x*PIX, y*PIY);
}
}اعتقد ان الكود واضح حيث قمت ببناء فريم ورسمت بداخله خط مستقيم كما هو واضح بالشكل التالي
الآن لنفرض اننا قمنا بزيادة قيمة المتحول x الى 70 عندئذ فان الخط المستقيم الذي سيتم رسمه سيتعدى مساحة الاطار ولن نستطيع رؤيته كاملا حتى لو قمنا بتكبير الاطار لاقصى حد
طبعا الحل المنطقي هو اضافة scroll لحل هذه المعضلة وقد قمت باضافته حسب الكود التالي
import java.awt.*;
import javax.swing.*;
public class DrawTest extends JPanel{
private static JScrollBar jscrbHort = new JScrollBar(JScrollBar.HORIZONTAL);
private static JScrollBar jscrbVert = new JScrollBar(JScrollBar.VERTICAL);
private int x = 70;
private int y = 5;
private int PIX = 20;
private int PIY = 40;
public static void main (String[] args){
DrawTest draw = new DrawTest();
JFrame frm = new JFrame("Line");
frm.setSize(1200, 500);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - frm.getWidth())/2;
int y = (screenSize.height - frm.getHeight())/2;
frm.setLocation(x, y);
Container container = frm.getContentPane();
container.setLayout(new BorderLayout());
container.add(draw, BorderLayout.CENTER);
container.add(jscrbVert, BorderLayout.EAST);
container.add(jscrbHort, BorderLayout.SOUTH);
}
protected void paintComponent(Graphics g ) {
super.paintComponents(g);
g.drawLine(PIX, y*PIY, x*PIX, y*PIY);
}
}لكن لم أستفد شيئا لسبب لا اعلمه!!!
طبعا اعتقد ان المسالة الآن واضحة تماما وقد جربت وحاولت ومحاولاتي تشهد علي
فهل من مساعدة واقتراح يا اخوان!!
