Улучшение пользовательского интерфейса с помощью кнопок (Java) - PullRequest
0 голосов
/ 09 декабря 2018

Я новый программист на Java, и у меня есть код, в котором я пытаюсь улучшить пользовательский интерфейс, добавляя кнопки.По сути, прямо сейчас код принимает список массивов и позволяет пользователю делать с ним много вещей.Пользователь может добавлять элементы в список массивов, удалять элементы из списка массивов, устанавливать элементы по определенному индексу в списке массивов, печатать элементы в списке массивов и получать элемент по определенному индексу в массиве.В значительной степени это позволяет пользователю взаимодействовать со списком массивов некоторыми базовыми способами, используя базовые функции списка массивов (.add, .remove и т.выполните одно из этих действий (то есть введите 1, чтобы напечатать элементы в массиве), но я пытаюсь сделать так, чтобы функции работали с кнопками.Я изучал, как кнопки и слушатели действий работают в течение последнего часа или около того, и я подумал, что хорошо разбираюсь в этом, но столкнулся с проблемой.Я запускаю свой код, и мои кнопки не отображаются, поэтому я не понимаю, почему это происходит.

Вот самая важная часть моего кода:

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class test                                                                                                                                                                                                                                                                                                                                     
{
    public static void main (String arg[]) throws IOException {

        // * Main Variable Declaration (with any Initialization)
        //
        ArrayList<String> List = new ArrayList<String>();        
        boolean            continueThisApp = true;       
        int                userInput_MenuChoice;                    
        Scanner            scanner = new Scanner(System.in);                 

        // * Main Code
        //        
        while( continueThisApp )
        {
            // * Menu of Choices
            //
            JFrame frame = new JFrame();
            JButton b1 = new JButton();
            JButton b2 = new JButton();
            JButton b3 = new JButton();
            JButton b4 = new JButton();
            JButton b5 = new JButton();
            JButton b6 = new JButton();           
            b1.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                    print(items_ObsInArrLst);             
                }
            });
            b2.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                    add(items_ObsInArrLst);             
                }
            });
            b3.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                    remove(items_ObsInArrLst);             
                }
            });
            b4.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                    get(items_ObsInArrLst);             
                }
            });
            b5.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                    set(items_ObsInArrLst);             
                }
            });
            b6.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent e) {
                    System.out.println("*** Thanks for Trying our App. :)");
                }
            });
            frame.setSize(1000, 1000);
            //b1
            b1.setVisible(true);
            b1.setText("Print elements");
            frame.setLayout(new FlowLayout());
            frame.add(b1);
            //b2
            b2.setVisible(true);
            b2.setText("Add elements");
            frame.add(b2);
            //b3
            b3.setVisible(true);
            b3.setText("Remove elements");
            frame.add(b3);
            //b4
            b4.setVisible(true);
            b4.setText("Get elements");
            frame.add(b4);
            //b5
            b5.setVisible(true);
            b5.setText("Set elements");
            frame.add(b5);
            //b6
            b6.setVisible(true);
            b6.setText("Quit");
            frame.add(b6);

            // NOTE THAT THIS PART (THE OLD WAY WE DID IT) IS COMMENTED OUT
            /*if( userInput_MenuChoice == 1 ){
                print_Items_ObsInArrLst_Mth(items_ObsInArrLst);             
            }
            else if( userInput_MenuChoice == 2 ){
                scannerInputTo_AddLst_Mth (items_ObsInArrLst);             
            }
            else if( userInput_MenuChoice == 3 ){
                scannerInputTo_RemoveLst_Mth (items_ObsInArrLst);             
            }
            else if( userInput_MenuChoice == 4 ){
                scannerInputTo_GetLst_Mth (items_ObsInArrLst);             
            }            
            else if( userInput_MenuChoice == 5 ){
                scannerInputTo_SetLst_Mth (items_ObsInArrLst);             
            }
            else if( userInput_MenuChoice == 9 ){
                continueThisApp_Bool = false;
                System.out.println("*** Thanks for Trying our App. :)");
            }
            else{
                System.out.println("*** Invalid Menu Choice. Retry.");
            }  */

        }  
    }

Функции внутри слушателей действий работают как надо, но сами кнопки для меня не отображаются.Я спрашиваю, знает ли кто-нибудь, почему кнопки не появляются.Я уверен, что есть другие проблемы с моим кодом, но я, вероятно, могу исправить их, если я знаю, почему кнопки не появляются.Если это помогает, я в настоящее время использую BlueJ.

tl; dr - я внедрил кнопки в свой код, но они не появляются, когда я запускаю код.

1 Ответ

0 голосов
/ 09 декабря 2018

Прямо сейчас, пользователь должен ввести число, чтобы сделать одну из этих вещей (т.е. ввести 1, чтобы напечатать элементы в массиве), но я пытаюсь сделать так, чтобы функции работалис кнопками.

Приложение с графическим интерфейсом работает иначе, чем текстовое приложение.Во-первых, вы не используете while loop для прослушивания ввода пользователя.

По сути, прямо сейчас код принимает список массивов

в графическом интерфейсеприложение, которое вы также не работаете напрямую с ArrayLists для отображения данных.Вместо этого вы используете компонент Swing, и этот компонент будет использовать Model для хранения данных.Таким образом, «модель» заменяет ArrayList.То есть все операции по добавлению / удалению выполняются для модели.

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

Начните с прочтения раздела из учебника по Swing по Как использовать списки .Пример ListDemo показывает вам все необходимое для создания графического интерфейса, который использует кнопки для добавления / удаления элементов из ListModel из JList.

...