Обращение с формы одного класса к объектам формы другого класса - Java

Узнай цену своей работы

Формулировка задачи:

Такой вопрос: у меня есть основной класс, в котором описано текстовое поле textpane на форме, есть другой класс в котором есть списки( jList ), содержащие в себе шрифты, начертание и размеры. В итоге в форме первого класса я нажимаю кнопку "шрифт", открывается форма второго класса со списками, я выбираю необходимые параметры шрифта и .... самое интересное... по кнопке ОК все должно записаться в переменную типа Font(например:

Font

selectedFont

) и каким то образом отправиться в первый класс в аргумент к textPane.setFont(

selectedFont

). Помогите, научите как это сделать? Не получается по кнопке ОК второго класса(вторая форма) обратиться к объекту с первого класса(первой формы) чтобы назначить ему шрифт и закрыв вторую форму остаться на первой и продолжить работу с текстовым полем(например продолжить набирать в ней текст). Чтобы было более понятно, что именно хочется сделать, можно открыть виндовый блокнот, там есть опция "шрифт", соответственно сам блокнот это первая форма, опция Шрифт это вторая форма... пытаюсь реализовать то же самое у себя

Решение задачи: «Обращение с формы одного класса к объектам формы другого класса»

textual
Листинг программы
public class fc extends JDialog {

    private JPanel contentPane;
  
    String[] fontNames;
  
    String family;          //имена шрифтов
    int style;                 //стиль начертания шрифта
    int size;                //размер шрифта
    public static Font selectedFont;        //Шрифт, которому они соответствуют(3 параметра выше)

  
    public Integer Sizes[] = {8, 10, 11, 12, 14, 16, 18, 20, 24, 30, 36, 40, 48, 60, 72};         //список всевозможных размеров шрифта

    static final String styleNames[] = new String[] {"Plain", "Bold", "Italic", "BoldItalic"};         //Названия начертаний из меню "Style"
  
    static final Integer[] styleValues = new Integer[] {new Integer(Font.PLAIN), new Integer(Font.ITALIC),
            new Integer(Font.BOLD), new Integer(Font.BOLD + Font.ITALIC)};        //Значения, соответствующие различным названиям
  
    JLabel lblPreviewText;      
    JList fontList;

    /**
     запуск
     */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());  
        } catch (ClassNotFoundException e1) {
          
            e1.printStackTrace();
        } catch (InstantiationException e1) {
          
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
          
            e1.printStackTrace();
        } catch (UnsupportedLookAndFeelException e1) {
          
            e1.printStackTrace();
        }
        JFrame.setDefaultLookAndFeelDecorated(true);
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    fc fc = new fc();
                    fc.setLocationRelativeTo(null);
                    fc.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     *Создание frame.
     */
    public fc() {
        //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 471, 392);
        contentPane = new JPanel();
        contentPane.setLayout(null);
        setContentPane(contentPane);
        setModal(true);
        setTitle("Шрифт");
        setResizable(false);
        setLocationRelativeTo(null);
      
        //Выясняем, какие шрифты доступны в системе
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        fontNames = env.getAvailableFontFamilyNames();
      

        //Устанавливаем начальные значения свойств      
        style = Font.PLAIN;
        size = 14;
        selectedFont = new Font(family, style, size);
      
      
        JScrollPane scrollPane = new JScrollPane(fontList);
        scrollPane.setBounds(33, 31, 165, 201);
        contentPane.add(scrollPane);
        scrollPane.setViewportView(fontList);

      
        JButton btnOk = new JButton("OK");
        btnOk.addActionListener(new ActionListener() {
          
            public void actionPerformed(ActionEvent e) {
          
                MainFrame.textPane.setFont(selectedFont);
                dispose();                                          
          
            }
        });
        btnOk.setBounds(237, 316, 89, 29);
        contentPane.add(btnOk);
      
        JButton btnCancel = new JButton("Отмена");
        btnCancel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
              
                dispose();                                            //Закрытие окна выбора шрифтов, без закрытия всего приложения
            }
        });
        btnCancel.setBounds(342, 316, 89, 29);
        contentPane.add(btnCancel);

    }
  
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы