Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
6 / 0 / 0
Регистрация: 01.10.2021
Сообщений: 23

GUI калькулятор матриц

09.04.2022, 19:40. Показов 1410. Ответов 2

Студворк — интернет-сервис помощи студентам
Хочу сделать калькулятор матриц (пример представлен на картинке). В качестве GUI использую swing и таблицы jtable. И тут самый главный вопрос, можно ли в jtable между таблицами засунуть x1,x2..xn как на картинке? Или для этого лучше использовать какой другой компонент swing?
Миниатюры
GUI калькулятор матриц  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2022, 19:40
Ответы с готовыми решениями:

Калькулятор матриц
Требуется реализовать различные операции над матрицами такие как: транспонирование матрицы; сложение, вычитание, умножение матриц;...

GUI калькулятор
Пытаюсь сделать GUI калькулятор. Вместо любой арифметической операции выполняется сложение. #include "mainwindow.h" ...

Калькулятор GUI
есть проблема. Если у меня уже введено значение в edit text, а я хочу перед ним поставить sin,log и т.д, то функция перескакивает за...

2
28 / 18 / 10
Регистрация: 09.05.2019
Сообщений: 69
03.06.2022, 14:48
ммм высшая математика, ну попробуем... Я сам хотел такое сделать вместо того чтобы в тетради всё вычислять

Сделал не так как на рисунке и не так как ты хотел, но в будущем можно дорабатывать

супер черновой вариант, но худо-бедно сложение работает )

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Main {
    public static void main(String[] args) {
        JFrame j = new JFrame(){
            void ad(Component c ){
                add(c);
                revalidate();
            }
            {
                setLayout(new FlowLayout());
                Table 
                    t1 = new Table(new int[][]{{22,22},{33,33}}),
                    t2 = new Table(new int[][] {{55,55},{44,44}});
                add(t1);
                add(t2);
                add(new JButton("СУММА") {{addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {
                    ad(tSumm(t1, t2));
                }});}});
                setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(600,600);
            }
        };
    }
    static Table tSumm(Table t1 , Table t2){
        int[][] data = new int[t1.data.length][t1.data[0].length];
        for (int i=0;i<t1.data.length;i++)
            for(int j=0;j<t1.data[0].length;j++)
                data[i][j]=t1.data[i][j]+t2.data[i][j];
        return new Table(data);
    }
}
class Table extends JPanel{
    JTable jtable = new JTable();
    int[][] data;
    Table(int[][] data){
        this.data = data.clone();
        initTable();
        add(jtable);
    }
    void initTable() {
        String[][] strArr = new String[data.length][data[0].length];
        for(int i = 0 ; i<strArr.length;i++) 
            for(int j =0; j<strArr[i].length;j++)
                strArr[i][j]=""+data[i][j];
        jtable.setModel(new DefaultTableModel(strArr,strArr[0]));
    }
}



источники
http://www.java2s.com/Tutorial... g_List.htm
https://java-online.ru/swing-layout.xhtml
0
28 / 18 / 10
Регистрация: 09.05.2019
Сообщений: 69
04.06.2022, 11:45
Лучший ответ Сообщение было отмечено Pontik как решение

Решение

Добавил разницу и возможность изменять таблицы

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTable;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableModel;
public class Main {
    public static void main(String[] args) {
        new JFrame(){
            JPanel toInterfacePanel(JTable t) {
                return new JPanel(){{
                        setLayout(new BorderLayout());
                        add(t);
                        add(new JButton(new AbstractAction() {public void actionPerformed(ActionEvent e) {
                            new JFrame() {JSlider js1,js2;{
                                JTable t1 = new JTable(new DefaultTableModel(2, 2));
                                js1 = new JSlider(1,30,2) {{setOrientation(VERTICAL); addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {
                                    t1.setModel(new DefaultTableModel(js1.getValue(),js2.getValue()));
                                }});}};
                                js2 = new JSlider(1,30,2) {{setOrientation(VERTICAL);addChangeListener(new ChangeListener() {public void stateChanged(ChangeEvent e) {
                                    t1.setModel(new DefaultTableModel(js1.getValue(),getValue()));
                                }});}};
                                add (t1);
                                add (js1,"West");
                                add (js2,"East");
                                add(new JButton(new AbstractAction() {public void actionPerformed(ActionEvent e) {
                                    t.setModel(t1.getModel());
                                    dispose();
                                }}) {{setText("Применить");}},"South");
                                setSize(400,400);setVisible(true);setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                            }};
                        }}) {{setText("Изменить");}},"South");
                    }};
            };
            {
                setLayout(new FlowLayout());
                JTable 
                    t1 = new JTable(new String[][]{{21+"",22+""},{33+"",14+""}},new String[] {"1","2"}),
                    t2 = new JTable(new String[][]{{23+"",25+""},{3654+"",44+""}},new String[] {"1","2"}),
                    t3 = new JTable(new String[][]{{0+"",0+""},{0+"",0+""}},new String[] {"",""});
                add(toInterfacePanel(t1));
                add(toInterfacePanel(t2));
                add(new JPanel() {{
                    setLayout(new GridLayout(2,1));
                    add(new JButton("СУММА") {{addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {
                        String[][] data = new String[t1.getModel().getRowCount()][t1.getModel().getColumnCount()];
                        for (int i=0;i<data.length;i++)
                            for(int j=0;j<data[0].length;j++)
                                data[i][j]=Integer.parseInt ((String) t1.getModel().getValueAt(i, j))+
                                Integer.parseInt ((String) t2.getModel().getValueAt(i, j))+"";
                        t3.setModel(new DefaultTableModel(data,data[0]));
                    }});}});
                    add(new JButton("Разность") {{addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {
                        String[][] data = new String[t1.getModel().getRowCount()][t1.getModel().getColumnCount()];
                        for (int i=0;i<data.length;i++)
                            for(int j=0;j<data[0].length;j++)
                                data[i][j]=Integer.parseInt ((String) t1.getModel().getValueAt(i, j))-
                                Integer.parseInt ((String) t2.getModel().getValueAt(i, j))+"";
                        t3.setModel(new DefaultTableModel(data,data[0]));
                    }});}});
                }});
                add(t3);
                setVisible(true);setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(600,600);
            }
        };
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.06.2022, 11:45
Помогаю со студенческими работами здесь

Калькулятор gui
Возникла проблема с калькулятором gui. Вообщем, есть калькулятор, рабочий но, нужно сделать, чтобы можно было вводить числа с клавиатуры...

GUI приложение калькулятор
Помогите разработать GUI приложение калькулятор, использующий MSScriptControl.ScriptControl для проведения вычислений. Предоставьте объекту...

Написать калькулятор с GUI
помогите пожалуйста написать программу на джаве(((очень надо((( Создать меню с командами Input, Calc, Quit. Команда Calc недоступна....

Калькулятор простых дробей на Java GUI
Добрый вечер, ребята очень нужна помощь, надо написать калькулятор простых дробей пример(1/4*1/2), то есть должны быть такие операции над...

Калькулятор с GUI, выполняющий операции в десятичной, двоичной и шестнадцатеричной СС
Написать GUI-программу в соответствии с заданным вариантом. Каждая программа должна иметь меню и использовать как минимум один диалог....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru