জাভাতে একটি কাস্টম জেবটন তৈরি করা

আপনার নিজস্ব বাটন গ্রাফিকের সাথে একটি JButton তৈরি করার একটি উপায় আছে কি না বাটনটির ভিতরে কোনও ছবি নেই?

যদি না হয়, কাস্টম JButton জাভাতে তৈরি করতে আরেকটি উপায় আছে?

0

5 উত্তর

যখন আমি প্রথম জাভা শেখার ছিলাম তখন আমরা ইহাটিজী তৈরি করতাম এবং আমি ভাবলাম যে শুধুমাত্র JPanel তে সবকিছু অঙ্কন করার পরিবর্তে কাস্টম সুইং উপাদান এবং পাত্রে তৈরি করা কঠিন হবে। প্রসারিত উপাদানগুলি বর্ধিত করার সুবিধাটি অবশ্যই কীবোর্ড শর্টকাট এবং অন্যান্য অ্যাক্সেসযোগ্যতার বৈশিষ্ট্যগুলির জন্য সমর্থন যোগ করার ক্ষমতা থাকতে হবে যা আপনি পেইন্ট() </> দ্বারাও করতে পারবেন না </কোড> পদ্ধতিটি একটি সুন্দর ছবি মুদ্রণ। তবে সবচেয়ে ভাল উপায় এটি করা নাও হতে পারে, তবে এটি আপনার জন্য একটি ভাল শুরু বিন্দু হতে পারে।

সম্পাদনা করুন 8/6 - ছবি থেকে যদি স্পষ্ট না হয়, তবে প্রতিটি ডাই একটি বোতাম যা আপনি ক্লিক করতে পারেন। এটি নীচের DiceContainer এ সরানো হবে সোর্স কোডটি দেখলে আপনি দেখতে পাবেন যে প্রতিটি ডাই বাটনটি তার মানের উপর ভিত্তি করে ডায়নামিকভাবে আঁকা হয়।

alt text
alt text
alt text

এখানে মৌলিক পদক্ষেপগুলি:

  1. Create a class that extends JComponent
  2. Call parent constructor super() in your constructors
  3. Make sure you class implements MouseListener
  4. Put this in the constructor:

    enableInputMethods(true);   
    addMouseListener(this);
    
  5. Override these methods:

    public Dimension getPreferredSize()  
    public Dimension getMinimumSize()  
    public Dimension getMaximumSize()
    
  6. Override this method:

    public void paintComponent(Graphics g)
    

আপনার বোতাম আঁকতে হলে আপনার সাথে কাজ করতে হবে এমন পরিমাণ পরিমাণ getPreferredSize() দ্বারা সংজ্ঞায়িত করা হয়, অনুমান করে getMinimumSize() এবং getMaximumSize() ফিরে আসুন একই মান আমি এই নিয়ে খুব বেশি পরীক্ষা নিই নি, তবে আপনার GUI- এর জন্য ব্যবহার করা লেআউটের উপর ভিত্তি করে আপনার বোতাম সম্পূর্ণ ভিন্নভাবে দেখতে পারে।

এবং অবশেষে, উৎস কোড । যদি আমি কিছু মিস করেছি

0
যোগ
আপনি এখানে পুরো কোড করা যাবে।
যোগ লেখক Doug Hauf, উৎস
হাই, প্রথম কোডের জন্য ধন্যবাদ! আমি আপনার কোড 'একটি সেটActionComme (স্ট্রিং কমান্ড)' যোগ সুপারিশ করবে। এটি সুইং এর ঘটনাগুলি ফিল্টার করার একটি উপায়। (কিন্তু তারপর আপনি তর্ক করতে পারেন যে জিনিষগুলি আরও ভাল করার জন্য যোগ করা যেতে পারে যে 1001 জিনিস আছে: পি)
যোগ লেখক Jason Rogers, উৎস
JButton- এ সেট আইকন / সেটPressedIcon এর পাশাপাশি অন্যান্য আইকন কার্যকারিতা উপভোগ করে আপনি আসলে একটি মই তৈরি করতে পারেন, আপনি আসলে একটি প্লেইন পুরানো JButton (পরিবর্তে subclassing অথবা একটি কাস্টম JComponent তৈরি) ব্যবহার করতে পারেন
যোগ লেখক ControlAltDel, উৎস

You could always try the Synth look & feel. You provide an xml file that acts as a sort of stylesheet, along with any images you want to use. The code might look like this:

try {
    SynthLookAndFeel synth = new SynthLookAndFeel();
    Class aClass = MainFrame.class;
    InputStream stream = aClass.getResourceAsStream("\\default.xml");

    if (stream == null) {
        System.err.println("Missing configuration file");
        System.exit(-1);                
    }

    synth.load(stream, aClass);

    UIManager.setLookAndFeel(synth);
} catch (ParseException pe) {
    System.err.println("Bad configuration file");
    pe.printStackTrace();
    System.exit(-2);
} catch (UnsupportedLookAndFeelException ulfe) {
    System.err.println("Old JRE in use. Get a new one");
    System.exit(-3);
}

সেখানে থেকে, যান এবং আপনার JButton যোগ করুন সাধারণত আপনি চাই শুধুমাত্র পরিবর্তন হল আপনি setName (স্ট্রিং) পদ্ধতি ব্যবহার করে কীভাবে xml ফাইলে বোতামটি ম্যাপ করা উচিত তা চিহ্নিত করে।

XML ফাইলটি এটির মতো দেখতে পারে:


    
    

বাঁধ উপাদান সেখানে ম্যাপ কি নির্দিষ্ট করে (এই উদাহরণে, এটি যে কোন বোতাম যার নাম সম্পত্তি "ময়লা" সেট করা হয়েছে স্টাইলিং প্রয়োগ করা হবে)।

এবং দরকারী লিঙ্ক একটি দম্পতি:

http://javadesktop.org/articles/synth/

http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel /synth.html

0
যোগ

হ্যাঁ, এটা সম্ভব। সুইং ব্যবহার করার জন্য প্রধান স্বার্থে এক যে বিমূর্ত নিয়ন্ত্রণ তৈরি এবং manipulates হতে পারে, যা আরাম।

এখানে বিদ্যমান JButton বর্গ পাঠ্যের ডানদিকে একটি বৃত্ত আঁকা একটি দ্রুত এবং ময়লা উপায়।

package test;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MyButton extends JButton {

    private static final long serialVersionUID = 1L;

    private Color circleColor = Color.BLACK;

    public MyButton(String label) {
        super(label);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Dimension originalSize = super.getPreferredSize();
        int gap = (int) (originalSize.height * 0.2);
        int x = originalSize.width + gap;
        int y = gap;
        int diameter = originalSize.height - (gap * 2);

        g.setColor(circleColor);
        g.fillOval(x, y, diameter, diameter);
    }

    @Override
    public Dimension getPreferredSize() {
        Dimension size = super.getPreferredSize();
        size.width += size.height;
        return size;
    }

    /*Test the button*/
    public static void main(String[] args) {
        MyButton button = new MyButton("Hello, World!");

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);

        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new FlowLayout());
        contentPane.add(button);

        frame.setVisible(true);
    }

}

লক্ষ্য করুন যে paintComponent ওভাররাইডিং দ্বারা বাটনটির বিষয়বস্তু পরিবর্তন করা যায়, কিন্তু যে সীমানাটি paintborder পদ্ধতি দ্বারা আঁকা হয় সামগ্রীতে পরিবর্তনগুলি গতিশীলভাবে সমর্থন করার জন্য getPreferredSize পদ্ধতিটিও পরিচালিত করা প্রয়োজন। ফন্ট ম্যাট্রিক্স এবং চিত্র মাত্রা পরিমাপ যখন যত্ন নিতে হবে।

আপনি নিয়ন্ত্রণ করতে পারেন একটি নিয়ন্ত্রণ তৈরি করার জন্য, উপরে কোড সঠিক পদ্ধতি নয়। মাত্রা এবং রং সুইং গতিশীল এবং চেহারা উপর নির্ভরশীল এবং ব্যবহার করা হচ্ছে বোধ। এমনকি ডিফল্ট মেটাল বর্ণটি JRE সংস্করণগুলির মধ্যে পরিবর্তিত হয়েছে। এটি অ্যাবসটব্যাটবটন বাস্তবায়ন করা এবং সুইং এপিআই দ্বারা নির্ধারিত নির্দেশিকাগুলির সাথে সামঞ্জস্যপূর্ণ। একটি ভাল শুরু বিন্দু javax.swing.LookAndFeel এবং javax.swing.UIManager ক্লাসগুলি দেখুন।

Understanding the anatomy of LookAndFeel is useful for writing controls: Creating a Custom Look and Feel

0
যোগ

আমার প্রাথমিক সিএস ক্লাসগুলি থেকে আমি সুইং ডেভেলপমেন্ট না করলেও যদি এটি নির্মিত না হয় তবে আপনি javax.swing.AbstractButton কে অনুদিত করতে পারেন এবং আপনার নিজের তৈরি করতে পারেন। তাদের বিদ্যমান কাঠামো সঙ্গে একসঙ্গে কিছু টেলিগ্রাম করতে বেশ সহজ হতে হবে।

0
যোগ

আমি সম্ভবত ভুল ট্র্যাক মধ্যে একটি মিলিয়ন মাইল যাচ্ছে (কিন্তু আমি শুধুমাত্র তরুণ: পি)। কিন্তু আপনি গ্রাফিকটি একটি প্যানেলে এবং তারপর গ্রাফিক বস্তুতে একটি mouselistener যোগ করতে পারবেন না যাতে গ্রাফিকের ব্যবহারকারী যখন আপনার কর্ম প্রফার্ম হয়।

0
যোগ
এটি কাজ করবে, তবে যদি সম্ভব হয় তবে আমার টাইপ বাটন তৈরির তুলনায় আমি স্ট্যান্ডার্ড জেবটন ব্যবহার করতে পছন্দ করি।
যোগ লেখক Anton, উৎস