help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
java-math-tools
/
src
/
main
/
java
/
com
/
rskworld
/
mathtools
/
panels
RSK World
java-math-tools
Java Math Tools - 15 Mathematical Tools + Scientific Calculator + Geometry + Statistics + Financial Calculators + Swing GUI + Educational Design
panels
  • AgeCalculatorPanel.java2.4 KB
  • BMIPanel.java2.3 KB
  • CalculatorPanel.java4.5 KB
  • ConstantsPanel.java1.6 KB
  • EquationSolverPanel.java3.3 KB
  • FinancialPanel.java3.2 KB
  • GSTPanel.java2.1 KB
  • GeometryPanel.java4 KB
  • HistoryPanel.java1.8 KB
  • MatrixPanel.java4.2 KB
  • NumberSystemPanel.java3 KB
  • PasswordPanel.java3.2 KB
  • PlotterPanel.java3 KB
  • PrimePanel.java3.5 KB
  • StatisticsPanel.java3.5 KB
  • UnitConverterPanel.java5.8 KB
NumberSystemPanel.java
src/main/java/com/rskworld/mathtools/panels/NumberSystemPanel.java
Raw Download
Find: Go to:
/**
 * Project: Java Basic Math Tools
 * Developer: Molla Samser
 * Designer & Tester: Rima Khatun
 * Website: https://rskworld.in
 * Year: 2026
 */

package com.rskworld.mathtools.panels;

import com.rskworld.mathtools.utils.ThemeManager;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import java.awt.*;
import java.math.BigInteger;

public class NumberSystemPanel extends JPanel {
    private JTextField decimalField, binaryField, hexField, octalField;
    private boolean isUpdating = false;

    public NumberSystemPanel() {
        setLayout(new GridLayout(4, 2, 20, 20));
        setBorder(BorderFactory.createEmptyBorder(40, 40, 40, 40));
        initComponents();
    }

    private void initComponents() {
        add(new JLabel("Decimal (Base 10):"));
        decimalField = new JTextField();
        add(decimalField);

        add(new JLabel("Binary (Base 2):"));
        binaryField = new JTextField();
        add(binaryField);

        add(new JLabel("Hexadecimal (Base 16):"));
        hexField = new JTextField();
        add(hexField);

        add(new JLabel("Octal (Base 8):"));
        octalField = new JTextField();
        add(octalField);

        addDocumentListeners();
        ThemeManager.applyTheme(this);
    }

    private void addDocumentListeners() {
        decimalField.getDocument().addDocumentListener(new BaseDocumentListener(10, decimalField));
        binaryField.getDocument().addDocumentListener(new BaseDocumentListener(2, binaryField));
        hexField.getDocument().addDocumentListener(new BaseDocumentListener(16, hexField));
        octalField.getDocument().addDocumentListener(new BaseDocumentListener(8, octalField));
    }

    private void updateAll(String value, int fromBase) {
        if (isUpdating || value.isEmpty()) return;
        isUpdating = true;
        try {
            BigInteger num = new BigInteger(value, fromBase);
            if (fromBase != 10) decimalField.setText(num.toString(10));
            if (fromBase != 2) binaryField.setText(num.toString(2));
            if (fromBase != 16) hexField.setText(num.toString(16).toUpperCase());
            if (fromBase != 8) octalField.setText(num.toString(8));
        } catch (NumberFormatException e) {
            // Ignore partial/invalid input during typing
        }
        isUpdating = false;
    }

    private class BaseDocumentListener implements DocumentListener {
        private int base;
        private JTextField field;

        public BaseDocumentListener(int base, JTextField field) {
            this.base = base;
            this.field = field;
        }

        @Override public void insertUpdate(DocumentEvent e) { update(); }
        @Override public void removeUpdate(DocumentEvent e) { update(); }
        @Override public void changedUpdate(DocumentEvent e) { update(); }

        private void update() {
            SwingUtilities.invokeLater(() -> updateAll(field.getText(), base));
        }
    }
}
89 lines•3 KB
java

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer