একাধিক জে ফ্রেম ব্যবহার: ভাল বা খারাপ অনুশীলন? [বন্ধ]


530

আমি এমন একটি অ্যাপ্লিকেশন বিকাশ করছি যা চিত্রগুলি প্রদর্শন করে এবং একটি ডাটাবেস থেকে শব্দ প্লে করে। আমি জিইউআই থেকে ডাটাবেসে ছবি যুক্ত করতে আলাদা জেফ্রেম ব্যবহার করব কিনা তা সিদ্ধান্ত নেওয়ার চেষ্টা করছি।

আমি কেবল ভাবছি যে একাধিক জেফ্রেম উইন্ডো ব্যবহার করা ভাল অনুশীলন?


11
আপনি যদি কোনও মাল্টি-মনিটর সেটআপটিকে লক্ষ্য করে থাকেন তবেই!
ডিএনএ

17
আমি আরও যুক্তি দিয়ে বলব যে এটি ভাষা-অজ্ঞানবাদী এবং জাভা -ইন্টারফেসের সাথে জাভা -র চেয়ে বিশেষত আরও কিছু করতে হবে।
wchargin

6
আমি @WChargin এর সাথে একমত হব এই প্রশ্নটি আমি কখনই ভাবিনি তার চেয়ে বেশি মূল্যবান হয়ে উঠেছে!
প্যাডলার

1
আমি লক্ষ্য করেছি যে প্রাথমিকভাবে (যেমন আমার মতো) সাধারণত একাধিক জে ফ্রেম ব্যবহার করা হয়। সম্ভবত কারণ এটিকে কার্ডএলআউট বলার চেয়ে মূল জেফ্রেমের ভিতরে থেকে কল করা সহজ। যদিও কিছু ক্ষেত্রে এটি ব্যবহার করা ঠিক নয়।
হুডলাম

ডিবাগিং ক্যাকটাস খাওয়ার মতো হবে .. এটি ঠিক নয়।
তাসলিম ওসেনি

উত্তর:


447

আমি কেবল ভাবছি একাধিক জেফ্রেম ব্যবহার করা ভাল অনুশীলন কিনা?

খারাপ (খারাপ, খারাপ) অনুশীলন।

  • ব্যবহারকারীরা বন্ধুত্বপূর্ণভাবে: কেবলমাত্র একটির প্রত্যাশার ক্ষেত্রে ব্যবহারকারী তাদের টাস্ক বারে একাধিক আইকন দেখেন। এছাড়াও কোডিং সমস্যার পার্শ্ব প্রতিক্রিয়াগুলি ..
  • কোড এবং রক্ষণাবেক্ষণের একটি দুঃস্বপ্ন:
    • একটি মডেল ডায়লগ সেই ডায়ালগের বিষয়বস্তুতে মনোযোগ কেন্দ্রীভূত করার সহজ সুযোগ দেয় - এটি চয়ন / স্থির / বাতিল করে, তারপরে এগিয়ে যান। একাধিক ফ্রেম না।
    • পিতা-মাতার সাথে ক্লিক করা হলে পিতামাতার সাথে একটি কথোপকথন (বা ভাসমান সরঞ্জাম-বার) সামনে আসবে - আপনার যদি এটি পছন্দসই আচরণ হত তবে ফ্রেমে এটি প্রয়োগ করতে হবে।

একটি জিইউআইতে অনেকগুলি উপাদান প্রদর্শনের বিভিন্ন ধরণের উপায় রয়েছে, যেমন:

  • CardLayout(সংক্ষিপ্ত ডেমো। )। ভালোর জন্য:
    1. কথোপকথনের মতো উইজার্ড দেখানো হচ্ছে।
    2. সম্পর্কিত উপাদান রয়েছে এমন আইটেমগুলির জন্য তালিকা প্রদর্শন করা, গাছ ইত্যাদি নির্বাচন করা
    3. কোনও উপাদান এবং দৃশ্যমান উপাদানগুলির মধ্যে ফ্লিপিং।
  • JInternalFrame/JDesktopPane সাধারণত একটি এমডিআইয়ের জন্য ব্যবহৃত হয় ।
  • JTabbedPane উপাদান গ্রুপ জন্য।
  • JSplitPane দুটি উপাদান প্রদর্শন করার একটি উপায় যার মধ্যে একটি বা অন্যটির (মাপের) মধ্যে গুরুত্ব রয়েছে তা ব্যবহারকারী কী করছেন according
  • JLayeredPane এখনও অনেক ভাল .. স্তরযুক্ত উপাদান।
  • JToolBarসাধারণত ক্রিয়া বা নিয়ন্ত্রণের গ্রুপ থাকে। জিইউআইয়ের চারপাশে টেনে আনা যায়, বা ব্যবহারকারীর প্রয়োজন অনুসারে এটি পুরোপুরি বন্ধ করে দেওয়া যায়। উপরে উল্লিখিত হিসাবে, পিতামাতাদের এটি অনুযায়ী ছোট / পুনরুদ্ধার করা হবে।
  • একটি হিসাবে আইটেম হিসাবে JList(নীচে সহজ উদাহরণ)।
  • এ হিসাবে নোড হিসাবে JTree
  • নেস্টেড লেআউট

তবে যদি সেই কৌশলগুলি কোনও নির্দিষ্ট ব্যবহারের ক্ষেত্রে কাজ না করে, তবে নিম্নলিখিতগুলির চেষ্টা করুন। একটি একক প্রধান স্থাপন করুন JFrame, তারপরে JDialogবা JOptionPaneডায়ালগগুলির জন্য পিতামাতার হিসাবে ফ্রেমটি ব্যবহার করে বাকী মুক্ত-ভাসমান উপাদানগুলির জন্য উদাহরণ উপস্থিত হবে appear

অনেক ছবি

এক্ষেত্রে যেখানে একাধিক উপাদান চিত্র রয়েছে, পরিবর্তে নিম্নলিখিত যে কোনওটি ব্যবহার করা ভাল:

  1. JLabelসেই মুহুর্তে ব্যবহারকারী আগ্রহী যে কোনও চিত্র প্রদর্শনের জন্য একটি একক (একটি স্ক্রোল ফলকে কেন্দ্র করে)। যেমন দেখা গেছে ImageViewer
  2. অবশ্যই একটি একক সারি JList। যেমনটি এই উত্তরে দেখা গেছে । এর 'একক সারি' অংশটি কেবল তখনই কাজ করে যদি তারা সমস্ত একই মাত্রা হয়। পর্যায়ক্রমে, আপনি যদি ফ্লাইতে চিত্রগুলি স্কেল করতে প্রস্তুত হন এবং সেগুলি সমস্ত একই দিক অনুপাত (যেমন 4: 3 বা 16: 9)।


4
@ অ্যান্ড্রুথম্পসন আমি এমন পরিস্থিতিটি কখনই পাইনি যেখানে আমার JFrameআগে একাধিক প্রয়োজন ছিল এবং এই বিষয়গুলি কখনই বিবেচনা করি নি, ব্যাখ্যা করার জন্য ধন্যবাদ!
জেফ্রে

4
@ ব্যবহারকারী417896 "ঠিক নির্ভর করে।" না এটা হয় না। আমি গিম্প ব্যবহার করেছি এটি ভয়াবহ এবং একটি এমডিআই হওয়া উচিত।
অ্যান্ড্রু থম্পসন

4
@ryvantage "" (এক্সেল) এমডিআই হওয়া উচিত? " ভাল প্রশ্ন. আমি এটা উভয় উপায় (অবশ্যই না ব্যবহারকারী দেওয়া উচিত মনে শুধুমাত্র MDI আকারে)। উদাহরণস্বরূপ: 1) আমি বর্তমানে টেক্সটপ্যাড ব্যবহার করি এবং আমার পছন্দ অনুসারে কনফিগারেশনের মাধ্যমে এটি পৃথক দৃষ্টান্ত খোলে, যা প্রতিটি তালিকায় একাধিক নথি প্রস্তাবিত করে। 2) যদিও আমি সাধারণত ট্যাবড মোডে এফএফ ব্যবহার করব, মাঝে মাঝে আমি একটি ট্যাবটিকে একটি নতুন উইন্ডোতে টেনে আনি। - উদাহরণগুলির সাধারণ ফ্যাক্টরটি ব্যবহারকারী পছন্দ user অ্যাপটি সরবরাহ করুন। 'তবে ব্যবহারকারী এটি চায়'।
অ্যান্ড্রু থম্পসন

12
@ অ্যান্ড্রুথম্পসন আপনি নিজের সর্বশেষ মন্তব্যে আপনার নিজের যুক্তিটি সবেমাত্র প্রতিহত করেছেন। আপনার মূল উত্তরে আপনি বলেছেন এটি খারাপ অভ্যাস এবং কখনই করা উচিত নয়, তবে উপরে আপনার মন্তব্যে আপনি কখনও কখনও এসডিআই পছন্দ করেন এবং আমাদের ব্যবহারকারীদের পছন্দটি অফার করা উচিত। অবশ্যই, উপরের ব্যবহারকারী 417896 ঠিক এটাই বলছিলেন। এটা নির্ভর করে. এটি আমার সহকর্মী বিকাশকারীদের সম্পর্কে আমার সবচেয়ে বড় পোষা প্রাণীকে ঘৃণা করে। তাদের মধ্যে অনেকে তথাকথিত 'সেরা-অনুশীলন' সম্পর্কে ধর্মীয়ভাবে ধর্মান্ধ হয়ে ওঠেন এই বিষয়টি। আমরা যদি সবাই 'সেরা-অনুশীলনগুলি' আটকে থাকি এবং বর্গক্ষেত্রের বাইরে চিন্তা না করি তবে আমাদের কাছে আজ আমাদের কাছে উদ্ভাবনী UI হবে না।
ডানকিননার

4
বিশাল সাধারণীকরণ! ব্যবহারকারীর পৃথকভাবে তাদের উইন্ডো নিয়ন্ত্রণ করতে দেওয়া এবং টাস্ক বার থেকে পৃথকভাবে এগুলি অ্যাক্সেস করা সর্বদা খারাপ নয়। ভাল অনুশীলন হ'ল সমস্ত বিকল্প সম্পর্কে সচেতন হওয়া এবং বুদ্ধিমানের সাথে একটি চয়ন করা। এখানে অবশ্যই একাধিক জেফ্রেমস একটি ভাল ধারণা দেয়।
দাউদ ইবনে কেরেম

203

JFrameআমি সুইং অ্যাপ্লিকেশনগুলি প্রোগ্রামিং শুরু করার পরে একাধিক পদ্ধতির বাস্তবায়ন করেছি। বেশিরভাগ অংশের জন্য, আমি এটি শুরুতে করেছি কারণ আমি এর চেয়ে ভাল আরও জানতাম না। যাইহোক , আমি যেমন একজন বিকাশকারী হিসাবে আমার অভিজ্ঞতা এবং জ্ঞানের সাথে পরিপক্ক হয়েছি এবং অনলাইনে আরও অনেক অভিজ্ঞ জাভা দেবের মতামতগুলি পড়তে ও গ্রহণ করতে শুরু করেছি, আমি একাধিক পদ্ধতির (বর্তমান প্রকল্প এবং ভবিষ্যতের প্রকল্প উভয় ক্ষেত্রেই) সরিয়ে নেওয়ার চেষ্টা করেছি JFrame) কেবলমাত্র আমার সাথে দেখা হবে ... এটি পান ... আমার ক্লায়েন্টদের কাছ থেকে প্রতিরোধ! আমি যখন JInternalFrameপৃথক উপাদানগুলির জন্য "চাইল্ড" উইন্ডো এবং গুলি নিয়ন্ত্রণ করতে মডেল সংলাপগুলি প্রয়োগ করতে শুরু করি তখন আমার ক্লায়েন্টরা অভিযোগ করতে শুরু করলেন!আমি বেশ অবাক হয়েছিলাম, যেহেতু আমি যা করছিলাম সেটাই করছিলাম সেরা অনুশীলন! তবে, যেমন তারা বলে, "সুখী স্ত্রী হ'ল সুখী জীবন।" আপনার ক্লায়েন্টদের জন্য একই। অবশ্যই, আমি একটি ঠিকাদার তাই আমার শেষ ব্যবহারকারীদের আমার, বিকাশকারী, যা সম্ভবত একটি সাধারণ দৃশ্য নয় সরাসরি ডাইরেক্ট অ্যাক্সেস আছে।

সুতরাং, আমি একাধিক JFrameপদ্ধতির সুবিধাগুলি , পাশাপাশি অন্যরা উপস্থাপন করেছেন এমন কিছু কনস-বস্টটি ব্যাখ্যা করতে যাচ্ছি ।

  1. বিন্যাসে চূড়ান্ত নমনীয়তা - পৃথক JFrameগুলিকে অনুমতি দেওয়ার মাধ্যমে আপনি আপনার শেষ ব্যবহারকারীকে তার স্ক্রিনে কী ছড়িয়ে দিতে এবং নিয়ন্ত্রণ করতে পারবেন। ধারণাটি "উন্মুক্ত" এবং অ-সংকীর্ণ বোধ করে। আপনি এটি হারাবেন যখন আপনি একটি বড় JFrameএবং JInternalFrameএস এর একগুচ্ছের দিকে যান ।
  2. খুব মডুলারাইজড অ্যাপ্লিকেশনগুলির জন্য ভাল কাজ করে - আমার ক্ষেত্রে, আমার বেশিরভাগ অ্যাপ্লিকেশনগুলিতে 3 - 5 টি বড় "মডিউল" রয়েছে যা সত্যই একে অপরের সাথে কিছুই করার থাকে না। উদাহরণস্বরূপ, একটি মডিউল বিক্রয় ড্যাশবোর্ড এবং একটি অ্যাকাউন্টিং ড্যাশবোর্ড হতে পারে। তারা একে অপরের সাথে বা কিছুতেই কথা বলে না। যাইহোক, নির্বাহী উভয়ই খুলতে চান এবং এগুলি টাস্কবারে পৃথক ফ্রেম হওয়া তার জীবনকে সহজ করে তোলে।
  3. শেষ ব্যবহারকারীদের বাইরের উপাদানের রেফারেন্স দেওয়া সহজ করে তোলে - একবার, আমার এই পরিস্থিতি ছিল: আমার অ্যাপ্লিকেশনটিতে একটি "ডেটা ভিউয়ার" ছিল যা থেকে আপনি "নতুন যুক্ত করুন" এ ক্লিক করতে পারেন এবং এটি একটি ডেটা এন্ট্রি স্ক্রিন খুলবে would প্রাথমিকভাবে, উভয়ই JFrameএস। তবে, আমি চেয়েছিলাম যে ডেটা এন্ট্রি স্ক্রিন এমন একজন হয়ে JDialogউঠুক যার পিতামাতাই ডেটা ভিউয়ার ছিলেন। আমি এই পরিবর্তনটি করেছি এবং সাথে সাথেই আমি একজন প্রান্ত-ব্যবহারকারীর কাছ থেকে কল পেয়েছি যারা দর্শকের হ্রাস বা বন্ধ করতে পারে এবং সম্পাদককে খোলা রাখতে পারে যখন তিনি প্রোগ্রামের অন্য অংশটি উল্লেখ করেছেন (বা কোনও ওয়েবসাইট, আমি ডন) না মনে নেই) সে না একটি মাল্টি-মনিটর উপর, তাই সে এন্ট্রি ডায়ালগ প্রয়োজন প্রথম এবং হতে অন্য কিছুদ্বিতীয় হতে হবে, ডেটা দর্শকের সাথে সম্পূর্ণ লুকানো hidden এটি একটি দিয়ে অসম্ভব ছিল JDialogএবং অবশ্যই এটির সাথেও অসম্ভব হত JInternalFrame। আমি ভিক্ষাবৃত্তিতে এটিকে আবার JFramesতার বিচক্ষণতার জন্য পৃথক করে রাখলাম , তবে এটি আমাকে একটি গুরুত্বপূর্ণ শিক্ষা দিয়েছে।
  4. রূপকথার: হার্ড টু কোড - এটি আমার অভিজ্ঞতায় সত্য নয়। আমি দেখতে পাচ্ছি না যে এটির JInternalFrameচেয়ে একটি তৈরি করা কেন আরও সহজ হবে JFrame। আসলে, আমার অভিজ্ঞতাতে, JInternalFramesনমনীয়তার চেয়ে অনেক কম অফার করুন। আমি JFrameআমার অ্যাপ্লিকেশনগুলিতে সত্যই কার্যকরভাবে খোলার ও বন্ধ করার ব্যবস্থা করার পদ্ধতিগত পদ্ধতি তৈরি করেছি। আমি ফ্রেমের কোডের মধ্যে থেকেই ফ্রেমটিকে প্রায় সম্পূর্ণ নিয়ন্ত্রণ করি; নতুন ফ্রেম তৈরি করা যা SwingWorkerব্যাকগ্রাউন্ড থ্রেডগুলিতে ডেটা পুনরুদ্ধার এবং EDT- এ জিইউআই কোড নিয়ন্ত্রণ করে, ফ্রেমটিকে পুনরুদ্ধার / ফিরিয়ে আনছে যদি ব্যবহারকারী এটি দু'বার খোলার চেষ্টা করে, ইত্যাদি। আমার JFrameএসটি খুলতে হবে আপনাকে যা করতে হবে তা হ'ল এর open()সাথে মিলিত একটি সর্বজনীন স্ট্যাটিক পদ্ধতি এবং মুক্ত পদ্ধতি কল করুনwindowClosing() ইভেন্টটি বাকী অংশগুলি হ্যান্ডেল করে (ফ্রেমটি ইতিমধ্যে খোলা? এটি কি খোলা নয়, তবে লোডিং? ইত্যাদি) আমি এই পদ্ধতির একটি টেম্পলেট তৈরি করেছি যাতে প্রতিটি ফ্রেমের জন্য এটি প্রয়োগ করা কঠিন হয় না।
  5. মিথ / অপ্রমাণিত: রিসোর্স ভারী - আমি এই অনুমানমূলক বক্তব্যের পিছনে কিছু তথ্য দেখতে চাই। যদিও, সম্ভবত, আপনি একটি এর JFrameচেয়ে আরও বেশি জায়গার প্রয়োজন বলতে পারলেন JInternalFrame, এমনকি যদি আপনি 100 JFrameগুলি খোলেন তবে আপনি আরও কতগুলি সংস্থান গ্রহণ করবেন? যদি আপনার উদ্বেগ সংস্থানগুলির কারণে মেমরি ফাঁস হয়: কলগুলি dispose()আবর্জনা সংগ্রহের জন্য ফ্রেমের দ্বারা ব্যবহৃত সমস্ত সংস্থানকে মুক্ত করে (এবং আবার আমি বলি, একটি JInternalFrameঠিক একই উদ্বেগকে ডাকা উচিত)।

আমি অনেক লিখেছি এবং আমার মনে হয় আমি আরও লিখতে পারি। যাইহোক, আমি আশা করি যে আমি জন-মতামত নেমে আসছি না কারণ এটি একটি অপ্রিয় মতামত। প্রশ্নটি স্পষ্টতই একটি মূল্যবান এবং আমি আশা করি যে আমি একটি মূল্যবান উত্তর সরবরাহ করেছি, যদিও এটি সাধারণ মতামত না হয়।

প্রতি ফ্রেমে একাধিক ফ্রেম / একক নথি ( এসডিআই ) বনাম একক ফ্রেম / একক ফ্রেম প্রতি একক নথি ( এমডিআই ) এর দুর্দান্ত উদাহরণ মাইক্রোসফ্ট এক্সেল। এমডিআই এর কিছু সুবিধা:

  • আয়তক্ষেত্রাকার আকারে কয়েকটি উইন্ডো থাকা সম্ভব - যাতে তারা অন্য প্রক্রিয়া থেকে ডেস্কটপ বা অন্য উইন্ডোটি গোপন করে না (যেমন ওয়েব ব্রাউজার)
  • দ্বিতীয় এক্সেল উইন্ডোতে লেখার সময় একটি এক্সেল উইন্ডো দিয়ে অন্য প্রক্রিয়া থেকে একটি উইন্ডো খোলা সম্ভব - এমডিআই সহ, অভ্যন্তরীণ উইন্ডোগুলির একটিতে লেখার চেষ্টা করা পুরো এক্সেল উইন্ডোতে ফোকাস দেবে, সুতরাং অন্য প্রক্রিয়া থেকে উইন্ডোটি লুকিয়ে রাখবে
  • বিভিন্ন স্ক্রিনে বিভিন্ন নথি থাকা সম্ভব, যা স্ক্রিনগুলির একই রেজোলিউশন না থাকায় বিশেষত কার্যকর

এসডিআই (সিঙ্গল-ডকুমেন্ট ইন্টারফেস, অর্থাত্ প্রতিটি উইন্ডোতে কেবল একটি ডকুমেন্ট থাকতে পারে):

এখানে চিত্র বর্ণনা লিখুন

এমডিআই (একাধিক-ডকুমেন্ট ইন্টারফেস, অর্থাত্ প্রতিটি উইন্ডোতে একাধিক নথি থাকতে পারে):

এখানে চিত্র বর্ণনা লিখুন


16
ভাল করে ভাবলাম। আপনার যদি একাধিক মডিউল থাকে যাগুলির একে অপরের সাথে কোনও সম্পর্ক নেই, তবে কেন আলাদা অ্যাপ্লিকেশন তৈরি করবেন না? এছাড়াও, কোন সীমাবদ্ধতা বলছে আপনি ব্যবহার করতে হবে এর মোডাল , আপনি modeless ডায়ালগ ব্যবহার একটি দ্বিতীয় "ফ্রেম" হিসেবে সেবা করার জন্য পারে ডায়ালগ।
জেফ্রি

খুব ভাল উত্তর এবং বিস্তারিত উত্তর যদিও আমি এই সম্পর্কে @ ক্লিওপেট্রার সাথে একমত হতে পারি .. আমার একবার একশো স্ক্রিনের সাথে একটি অ্যাপ্লিকেশন ছিল যেখানে ব্যবহারকারীরা বিভিন্ন ইনপুটগুলির সাথে একাধিক স্ক্রিন / একই স্ক্রিনের আউটপুট ডেটার তুলনা করতে চেয়েছিলেন। আমাদের এটি করার অনুমতি দেওয়ার জন্য আমরা একটি কাস্টম উইন্ডোটিং সিস্টেম তৈরি করেছি। ব্যবহারকারীরা একে অপরের পাশে 2 জেফ্রেমিসহ আরও বেশি আরামদায়ক ছিলেন;)
জাভাতরজ

আমি যখন আপনার যুক্তি বুঝতে পেরেছি তখনও আমি এক JFrameএবং বড় পিতামাতার মধ্যে সমস্ত কিছু রাখতে পছন্দ করব JTabbedPane; তবে একটি দ্বিতীয় উইন্ডো (বা আরও বেশি) খোলার সম্ভাবনা সহ যেখানে লেআউটটি আলাদা হতে পারে, সুতরাং একটি হাইব্রিড আচরণ প্রদান করে যেখানে এসডিআই প্রেমিকারাও খুশি এবং এমডিআইও রয়েছে। সব ক্ষেত্রে, আমি সর্বদা JInternalFrameএকটি ভয়ঙ্কর নিদর্শন হিসাবে বিবেচনা করি যা আপনাকে উভয় বিশ্বের সমস্ত অসুবিধে দেয়। তারা যে নমনীয়তা দেয় তা কেবল স্তন্যপান করে এবং কোনও বাস্তব উদ্দেশ্য ছাড়াই তারা প্রচুর মূল্যবান পর্দার জায়গা খায়।
গিলিয়াম পোলেট 21

আমি সম্মত হই যে এসডিআই কখনও কখনও উপযুক্ত হয় (এবং ব্যবহারকারীরা প্রায়শই এটি পছন্দ করেন)। আরও একটি ত্রুটি আছে, এবং আমি এখনও পর্যন্ত এর জন্য কোনও কর্মসূচি খুঁজে পাইনি, দুর্ভাগ্যক্রমে: প্রত্যেকে JFrameতার নিজস্ব টাস্কবারের আইকন পেয়ে যায়। কখনও কখনও এটি আপনি যা চান ঠিক তেমন হয় তবে কখনও কখনও তা হয় না। উইনাপিতে এটি কনফিগার করা সহজ, তবে সুইং-তে মনে হয় এটি করা যায় না cannot
সুমা

সুমা @ সেক্ষেত্রে আমি মনে করি আমি একটি JDialogওভার বেছে নেব JFrame
রাইভ্যানেজ

51

আমি "ব্যবহারকারীর পক্ষে নয়" যুক্তিটি একটি উদাহরণ দিয়ে প্রমাণ করতে চাই যা আমি স্রেফ জড়িত ছিলাম।

আমাদের অ্যাপ্লিকেশনটিতে আমাদের একটি মূল উইন্ডো রয়েছে যেখানে ব্যবহারকারীরা পৃথক ট্যাব হিসাবে বিভিন্ন 'প্রোগ্রাম' চালায়। যথাসম্ভব আমরা এই অ্যাপ্লিকেশনটিকে এই একক উইন্ডোতে রাখার চেষ্টা করেছি।

তারা চালিত একটি 'প্রোগ্রাম' সিস্টেমের দ্বারা তৈরি করা রিপোর্টগুলির একটি তালিকা উপস্থাপন করে এবং ব্যবহারকারী প্রতিবেদনের ডায়ালগটি খোলার জন্য প্রতিটি লাইনের আইকনে ক্লিক করতে পারেন। এই দর্শক প্রতিবেদনের প্রতিকৃতি / ল্যান্ডস্কেপ এ 4 পৃষ্ঠা (গুলি) এর সমতুল্য দেখায়, তাই ব্যবহারকারীরা এই উইন্ডোটি বেশ বড় হতে পছন্দ করে প্রায় তাদের পর্দা ভরাট করে।

কয়েক মাস আগে আমরা আমাদের গ্রাহকদের কাছ থেকে এই প্রতিবেদন দর্শকদের উইন্ডোজকে নিয়ন্ত্রণহীন করার জন্য অনুরোধ পেতে শুরু করেছি, যাতে তাদের একই সময়ে একাধিক প্রতিবেদন খোলা থাকে।

কিছুক্ষণের জন্য আমি এই অনুরোধটিকে প্রতিহত করেছি কারণ আমি মনে করি না এটি একটি ভাল সমাধান ছিল। যাইহোক, ব্যবহারকারীরা কীভাবে আমাদের সিস্টেমের এই 'ঘাটতি' ঘটাচ্ছেন তা জানতে পেরে আমার মন পরিবর্তন হয়েছিল।

তারা কোনও ভিউয়ার খুলতে যাচ্ছিল, পিডিএফ ফাইলটি খোলার জন্য অ্যাক্রোব্যাট রিডার ব্যবহার করে নির্দিষ্ট ডিরেক্টরিতে প্রতিবেদনটি পিডিএফ হিসাবে সংরক্ষণের জন্য 'সেভ এস' সুবিধাটি ব্যবহার করে এবং পরবর্তী প্রতিবেদনের সাথে তারা একই কাজ করবে। তারা দেখতে চাইলে বিভিন্ন প্রতিবেদন আউটপুট নিয়ে একাধিক অ্যাক্রোব্যাট রিডার থাকবে।

তাই আমি রিলেন্ট করে দর্শকদেরকে নিরবচ্ছিন্ন করে দিয়েছি। এর অর্থ হ'ল প্রতিটি দর্শকের একটি টাস্ক-বার আইকন রয়েছে।

গত সপ্তাহে যখন তাদের কাছে সর্বশেষতম সংস্করণ প্রকাশ করা হয়েছিল, তখন তাদের কাছ থেকে অপ্রতিরোধ্য প্রতিক্রিয়া হ'ল তারা এটিকে পছন্দ করে। এটি আমাদের সিস্টেমে সাম্প্রতিকতম উন্নতিগুলির একটি।

সুতরাং আপনি এগিয়ে যান এবং আপনার ব্যবহারকারীদের বলুন যে তারা যা চায় তা খারাপ, তবে শেষ পর্যন্ত এটি আপনার পক্ষে কোনও পক্ষ নেয় না।

কিছু নোট:

  • এই মোডলেস উইন্ডোগুলির জন্য জডিওয়ালোগুলি ব্যবহার করা ভাল অনুশীলন বলে মনে হয়
  • ModalityTypeবুলিয়ান modalআর্গুমেন্টের পরিবর্তে নতুন ব্যবহারকারী কনস্ট্রাক্টরগুলি ব্যবহার করুন । এই ডায়লগগুলি টাস্ক-বার আইকন দেয়।
  • মোডলেস ডায়লগগুলির জন্য, কনস্ট্রাক্টরের কাছে নাল পিতা বা মাতাকে পাস করুন, তবে তাদের 'পিতা-মাতা' উইন্ডোর সাথে সম্পর্কিত করুন।
  • উইন্ডোজে জাভা Version এর সংস্করণে একটি বাগ রয়েছে যার অর্থ আপনার মূল উইন্ডোটি আপনাকে না জানিয়েই 'সর্বদা উপরে' হয়ে উঠতে পারে। এটি ঠিক করতে সংস্করণ 7 এ আপগ্রেড করুন

6
এটি ঠিক আমার অভিজ্ঞতাও। যদি আমি নিশ্চিত যে কোনও একটি বিষয়, লোকেরা যখন আপনার ব্যবহারকারী-বন্ধুত্বকে তারা যা করতে চায় তা করার জন্য এটি করার চেষ্টা করে এবং কিছুটা খারাপ করে দিলে আপনি কিছু ভুল করছেন। কার্যকারিতা রাজা।
রাইভ্যান্টেজ

এটি ঘুরে দেখার এক উপায় হ'ল একাধিক জে ফ্রেম খোলা থাকার অনুমতি দেওয়া, সমস্ত একই কার্যকারিতা সরবরাহ করে তবে ডিফল্টরূপে সবকিছুই একটি উইন্ডোতে সম্পন্ন হয়। এটি আসলে ব্যবহারকারীকে এসডিআই বা এমডিআইয়ের মধ্যে চয়ন করতে দেয়।
গিলিয়াম পোলেট

দুঃখিত? দয়া করে আপনার সমাধানটি আরও কিছুটা ভালভাবে ব্যাখ্যা করতে পারেন? এটি কীভাবে একক উইন্ডো এবং একাধিক উইন্ডো হতে পারে? আমাদের একটি প্রধান উইন্ডো রয়েছে যেখানে মূল অ্যাপ্লিকেশনটি চালিত হয় তবে কখনও কখনও আমাদের ডায়লগগুলি খোলার প্রয়োজন হয় এবং কখনও কখনও সেই সংলাপগুলি (ব্যবহারকারীর প্রয়োজনীয়তার উপর ভিত্তি করে) মোডলেস হওয়া দরকার। ইন্টারফেসটি এইভাবে হওয়া উচিত বা এটি নিজের জন্য একটি বড় গর্ত খনন করতে চলেছে এমন নিয়ম তৈরি করা।
ডানকিননার

1
@ গুইলাউমপলেট আমি ডানকানের সাথে একমত, আপনি কি আরও কিছু বোঝাতে চেয়েছেন? আমি তার বিভ্রান্তি ভাগ করে নিই
Ungeheuer

আমি মনে করি তার অর্থ হ'ল ব্যবহারকারীটি অ্যাপ্লিকেশনটির একাধিক অনুলিপি ('জেফ্রেম') শুরু করতে পারে তবে সেগুলির প্রত্যেকটির ভিতরেই এটি এসডিআই। তবে, আমাদের ক্লায়েন্টের অ্যাপ্লিকেশনটি একটি অত্যন্ত ঘন ক্লায়েন্ট, সুতরাং এটি একটি উত্স ক্ষুধার্ত পদ্ধতির হবে।
ডানকিননার

20

মূল ফ্রেমে একটি জিন্টার্ন ফ্রেম তৈরি করুন এবং এটি অদৃশ্য করুন। তারপরে আপনি এটি আরও ইভেন্টের জন্য ব্যবহার করতে পারেন।

jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);

19

আমি শেষবারের মতো সুইং টাচ করার পরে এটি হয়ে গেছে তবে সাধারণভাবে এটি করা খারাপ অভ্যাস। কিছু প্রধান অসুবিধা যা মাথায় আসে:

  • এটি আরও ব্যয়বহুল: আপনাকে ডায়ালগ বা জিনটার্ন ফ্রেম জাতীয় উইন্ডো কনটেইনার যেমন JFrame আঁকার জন্য আরও উপায় সংস্থান করতে হবে।

  • ব্যবহারকারী হিসাবে বন্ধুত্বপূর্ণ নয়: একসাথে আটকে থাকা জেফ্রেমের গুচ্ছটিতে নেভিগেট করা সহজ নয়, আপনার অ্যাপ্লিকেশনটি অ্যাপ্লিকেশনগুলির একটি সেট বেমানান এবং দুর্বল নকশার মতো দেখাবে।

  • এটি JInternFrame ব্যবহার করা সহজ , এটি একপ্রকারের প্রাকৃতিক পদ্ধতি, এখন আমাদের উপায়ের চেয়ে ডেস্কটপ এবং JInternFrame প্যাটার্নটির মাধ্যমে চিন্তাভাবনা করা আমাদের তুলনায় আরও সহজতর এবং অন্যান্য ব্যক্তিরা স্মার্ট (বা আরও বেশি সময় সহ), সুতরাং আমি এটি ব্যবহার করার পরামর্শ দেব।


7
একাধিক ব্যবহার করার সময় কি আপনার ব্যবহারকারীর জন্য একই প্রভাব থাকে JInternalFrameনা? ব্যক্তিগতভাবে, আমি এর ব্যবহারের সাথে একমত নই JInternalFrame! CardLayoutএকটি সত্য আশীর্বাদ!
ব্রানিস্লাভ লাজিক

4
আমি @ ব্র্যানো ৮৮ এর সাথে একমত JInternalFrameআপনি উল্লিখিত তিনটি মামলার কোনওটিতেই কোনও সুবিধা নেই (১. এর JInternalFrameচেয়ে হালকা প্রমাণ কোথায় JFrame? ২. আপনার JInternalFrameগুলি যেমন গুচ্ছ / অগোছালো / একগুচ্ছ একসাথে আটকে থাকতে পারে JFrame3.. কীভাবে JInternalFrameসহজ? এটি কী একই সঠিক কোড, ছাড়া একটি মধ্যে অন্তর্ভুক্ত করা হয় JDesktopPaneএবং এক প্রাকৃতিক পর্দা এলাকার মধ্যে অন্তর্ভুক্ত করা হয় তারা সমানভাবে আমাকে জটিল
ryvantage

1
1. জেফ্রেম হ'ল ওয়েট উপাদান যা জিন্টার্ন ফ্রেমের সাথে তুলনা করে যা একটি লাইটওয়েট। ২. আপনি কি এমন কোনও অ্যাপ্লিকেশন দেখেছেন যাতে একই সাথে কার্যক্ষম হওয়ার জন্য টন উইন্ডো রয়েছে? আইডিই, ব্রাউজারগুলি, এমনকি ফিনান্স অ্যাপ্লিকেশনেও এটি একই সুযোগে রাখা লক্ষ্য a ৩. আমি অতীতে জেআইএফ-কে ব্যবহার করা খুব সহজ বলে খুঁজে পেয়েছি এবং অবশ্যই কোনও দৃশ্যের সাথে কোনও দৃশ্যের সাথে উপযুক্ত উপাদান বেছে নেওয়ার কোনও অভিযোগ নেই
নেক্রনেট

4
1. আমি এর প্রমাণ দেখতে চাই। উভয়ই বস্তু, উভয়ই JComponents, উভয়েরই প্রায় একই ধরণের কাঠামো রয়েছে, একটিকে একটিতে রেন্ডার করা হয় JDesktopএবং একটিটি হয় না। আবার, দুঃখিত, তবে আমি বিশ্বাস করি যে আপনি "ওজন" সম্পর্কে অনুমান করছেন JFrame। ২. আমার অ্যাপ্লিকেশনগুলি এসডিআই ব্যবহার করে এবং আমার ক্লায়েন্টরা খুব খুশি। তবে, আপনি বলেছিলেন "এক টন উইন্ডোজ," যা অবশ্যই স্তন্যপান করবে। তবে, আমার বক্তব্যটি হ'ল: "এক টন" JInternalFrameএর মতো খারাপ চুষতে পারে! আপনি যদি বলছেন যে JIF গুলি আপনাকে একটি aড়ু ইউআই ডিজাইনার হতে দেয় তবে তা ভয়ানক। জেএফ বা জেআইএফ যাই হোক না কেন একটি বিশৃঙ্খলা বিশৃঙ্খলা cl
ryantage

2
"অবশ্যই কোনও দৃশ্যের সাথে সবচেয়ে ভাল উপযুক্ত উপাদানটি বেছে নিন"
নেক্রোনেট

10

খারাপ অনুশীলন অবশ্যই। একটি কারণ হ'ল এটি খুব 'ব্যবহারকারী-বান্ধব' নয় যে প্রত্যেকে JFrameএকটি নতুন টাস্কবার আইকন দেখায়। একাধিক JFrameগুলি নিয়ন্ত্রণ করা আপনার চুলগুলি ছিঁড়ে ফেলবে।

ব্যক্তিগতভাবে, আমি JFrameআপনার প্রকারের অ্যাপ্লিকেশনটির জন্য একটি ব্যবহার করব। একাধিক জিনিস প্রদর্শনের পদ্ধতিগুলি আপনার উপর নির্ভর করে, অনেকগুলি রয়েছে। Canvasস্প্যানিশ ভাষায়, JInternalFrame, CardLayout, এমনকি JPanelসম্ভবত s।

একাধিক জে ফ্রেম অবজেক্টস = ব্যথা, সমস্যা এবং সমস্যা।


9
হুম ... গৃহীত উত্তরের তুলনায় নতুন কিছু নয়, আফিক্স?
ক্লিওপেট্রা

5
"প্রতিটি জেফ্রেমে একটি নতুন টাস্ক বারের আইকন দেখায়" - এটি কেবল উইন্ডোতে প্রযোজ্য! ম্যাক ওএস এক্সে প্রতিটি অ্যাপ্লিকেশনটিতে কেবল একটি উইন্ডো আইকন রয়েছে, এটি যতগুলি উইন্ডো খোলা আছে তা নির্বিশেষে এবং অ্যাপ্লিকেশনগুলির পক্ষে একাধিক শীর্ষ স্তরের উইন্ডো থাকা সাধারণ বিষয়।
রোল্ফ

8

আমি মনে করি একাধিক Jframeগুলি ব্যবহার করা ভাল ধারণা নয়।

পরিবর্তে আমরা একইরকম JPanelএক বা একাধিক ব্যবহার করতে পারি ।JPanelJFrame

এছাড়াও আমরা এই JPanelএস মধ্যে পরিবর্তন করতে পারেন । সুতরাং এটি আমাদের মধ্যে জিনিসটির চেয়ে বেশি প্রদর্শন করার স্বাধীনতা দেয় JFrame

প্রত্যেকের জন্য JPanelআমরা বিভিন্ন জিনিস ডিজাইন করতে পারি এবং JPanelএগুলি একসাথে এককটিতে প্রদর্শিত হতে পারে JFrame

এই মধ্যে স্যুইচ করার জন্য JPanelএর ব্যবহারের JMenuBarসঙ্গে JMenuItemsপ্রত্যেকের জন্য JPanelবা 'JButton for eachJPanel`।

একের অধিক JFrameএকটি ভাল অনুশীলন নয়, তবে আমরা একের বেশি চাইলে কিছু ভুল হয় না JFrame

তবে JFrameএকাধিক JFrameএস থাকার চেয়ে আমাদের বিভিন্ন প্রয়োজনের জন্য একটি পরিবর্তন করা ভাল ।


5

যদি ফ্রেমগুলি একই আকার হতে চলেছে তবে কেন ফ্রেম তৈরি করে ফ্রেমটি পাস না করে তার পরিবর্তে এটির রেফারেন্স হিসাবে।

আপনি যখন ফ্রেমটি পাস করেছেন তখন আপনি এটি কীভাবে পপ করবেন তা সিদ্ধান্ত নিতে পারেন। এটি পরিসংখ্যানের একটি সেট গড় গণনা করার জন্য একটি পদ্ধতি থাকার মতো হবে। আপনি কি বার বার এই পদ্ধতিটি তৈরি করবেন?


1
এটি মূলত যা করছে কার্ডালআউট এবং জেটাব্বেডপেইন যা করতে পারে তা কিন্তু বিপরীতে তা করা এবং আপনার কোডটিকে অতিরিক্ত জটিল করে তোলা যখন আপনার একই জিনিসটি অর্জনের জন্য পরিষ্কার এবং সহজ সমাধান রয়েছে।
গিলিয়াম পোলেট

4

এটি একটি ভাল অনুশীলন নয় তবে আপনি এটি ব্যবহার করতে চাইলেও আপনি সিঙ্গলটন প্যাটার্নটিকে এটির ভাল হিসাবে ব্যবহার করতে পারেন। আমি আমার প্রকল্পের বেশিরভাগ ক্ষেত্রে সিঙ্গলটন নিদর্শনগুলি ব্যবহার করেছি।


3
একক প্যাটার্ন একটি দুঃস্বপ্ন। যে কোনও প্রকল্প যা স্কেল করতে চায় তা সর্বদা সিঙ্গেলটন প্যাটার্ন এড়ানোর চেষ্টা করা উচিত।
গিলিয়াম পোলেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.