Переход между формами java

Переключение между собой n форм

Добрый день.
Есть в приложении несколько форм, количество не важно. они между собою переключаются. одна форма вызывает нажатием на кнопку одну любую другую. формы одинаковы.

Я предполагаю это сделать так —
1. в main просто создаем одну первую форму, через конструктор.
2. отдельным файлом конструктор для создания новой формы.
2.1. в нем же метод для переключения формы. новая открывается и старая закрывается.
3. ну и уже в каждой форме свои примочки и кнопочка для вызова другой формы.

Переключение между scene
Помогите, как сделать так чтобы при нажатии на кнопку или menuitem метод stats успешно выполнялся.

Переключение между окнами
Добрый вечер. Из основного окна открываю второстепенное и скрываю основное: private class.

Переключение между (окнами) классами
В интернете очень много информации по переключению между визуальными окнами (кажется это называется.

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

Лучший ответ

Сообщение было отмечено Urself как решение

Решение

Если вам не надо потом будет ни возвращаться, ни передавать данные на старую форму, то на старой форме по нажатию на кнопку

Form2 form2 = new Form2(); form2.setVisible(true) //это если у вас в конструкторе не задана видимость. В противном случае можно обойтись только первой строчкой)

После чего вызываете метод закрытия первой формы: form1.dispose();
То есть вместе все будет выглядеть так:

Form2 form2 = new Form2(); form2.setVisible(true); form1.dispose();

Источник

Переход между формами

Всем привет. Я еще новичок в Яве. Изучаю формы. Написал программку работает хорошо. Прощу посмотреть Вас правильно ли я делаю или нет. В Проекте существует 3 класса (Main, OneForm, SecondForm).
Main:

public static void main(String[] args) throws IOException { OneForm oneForm = new OneForm(); oneForm.start(); }
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
public void run() { //Создадим окно и установим заголовок final JFrame jFrame = new JFrame("OneForm"); //Создадим панель JPanel panel = new JPanel(null); //Создадим кнопки JButton twoButton = new JButton("TwoForm"); //sizes twoButton.setBounds(20,20,200,100); twoButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SecondForm secondForm = new SecondForm(); secondForm.start(); jFrame.dispose(); } }); panel.add(twoButton); panel.setBackground(Color.WHITE); //Добавим панель в окно jFrame.add(panel); jFrame.setSize(1024,768); jFrame.setVisible(true); }
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
public void run() { //Создадим окно и установим заголовок final JFrame jFrame = new JFrame("SecondForm"); //Создадим панель JPanel panel = new JPanel(null); //Создадим кнопки JButton oneButton = new JButton("OneForm"); //sizes oneButton.setBounds(20,20,200,100); oneButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { OneForm oneForm = new OneForm(); oneForm.start(); jFrame.dispose(); } }); panel.add(oneButton); panel.setBackground(Color.WHITE); //Добавим панель в окно jFrame.add(panel); jFrame.setSize(1024,768); jFrame.setVisible(true); }

Когда я находясь на OneForm нажимаю на кнопку TwoButton — переходит на SecondForm все отлично. НО сначала закрывается OneForm и уж потом открывается SecondForm. Не успевает создастся вторая как первая уже закроется. Не красиво получается как-то. Поэтому подумал, может я совсем не правильно делаю эти переходы?
Спасибо за внимание.

Читайте также:  List of php coding

Источник

Somethings

Итак, продолжим. В этой части мы добавим в проект ещё одну форму и будем открывать её по нажатию кнопки Run . Также сделаем так, чтобы параметры, которые были введены в первой форме, передавались во вторую (они там ещё пригодятся). Однако, ничего страшного мы пока с ними делать не будем, а просто напишем «Введены такие-то числа»

Обработка нажатия кнопки

StartActivity.java

package demo.android.life; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class StartActivity extends Activity implements OnClickListener  Button mButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState)  super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.run); mButton.setOnClickListener(this);  > public void onClick(View v)  Toast.makeText(this, "It works", Toast.LENGTH_SHORT).show(); > > 

Здесь выделены добавленные строки. Итак, мы сделали форму слушателем события нажатия на кнопку (имплементировав OnClickListener ), и подписались на это событие для кнопки mButton (с помощью setOnClickListener ). Для того, чтобы проверить, что всё правильно, в методе, который обрабатывает событие, показываем оповещение (Toast). Запускаем — работает.

Добавление активности

Для того, чтобы создать в приложении форму, необходимо создать два файла — XML-разметку формы( run.xml ) и Java-класс формы ( RunActivity.java ).
Разметку сделаем простейшую:

run.xml

?xml version="1.0" encoding="utf-8"?>  xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">  android:id="@+id/message" android:layout_width="fill_parent" android:layout_height="fill_parent" /> > 

RunActivity.java

package demo.android.life; import android.app.Activity; import android.os.Bundle; public class RunActivity extends Activity  @Override public void onCreate(Bundle savedInstanceState)  super.onCreate(savedInstanceState); setContentView(R.layout.run); > > 

Кроме того, нужно упомянуть о новой форме в AndroidManifest.xml . Для этого в раздел application добавляем следующее:

 android:name="RunActivity">activity> 

Кстати, в новых версиях ADT можно добавлять активности не руками в XML, а с помощью какого-никакого графического интерфейса во вкладке Application —> Application Nodes.

Переход на другую активность

Нам хочется, чтобы это активность RunActivity появлялась после нажатия кнопки Run окна StartActivity . Пишем в обработчике этой кнопки следующее:

StartActivity.java

public void onClick(View v)   Intent intent = new Intent(); intent.setClass(this, RunActivity.class); startActivity(intent); finish(); > 

Intent

  • action — функция, которую надо выполнить. Задается в виде константы: ACTION_VIEW , ACTION_DIAL и т.д.
  • data — аргумент этой функции, записанный в виде URI

Передача данных между активностями

Итак, RunActivity появляется, но там ничего нет. Рассмотрим, каким образом можно передать параметры, введенные в StartActivity , в активность RunActivity .
У класса Intent , помимо основных атрибутов, есть ещё и второстепенные. В частности, есть такой атрибут extras , где в виде хеша ( Bundle ) хранятся любые дополнительные параметры. Им-то мы и воспользуемся. Итак, добавим в класс RunActivity.java следующие константы (ключи хеша):

RunActivity.java

public static final String EXT_COLS = "cols"; public static final String EXT_ROWS = "rows"; public static final String EXT_CELLS = "cells"; 

StartActivity.java

public void onClick(View v)   EditText rowsEditor = (EditText)findViewById(R.id.rows_count); EditText colsEditor = (EditText)findViewById(R.id.columns_count); EditText cellsEditor = (EditText)findViewById(R.id.cells_count); int cols = Integer.parseInt(colsEditor.getText().toString()); int rows = Integer.parseInt(rowsEditor.getText().toString()); int cells = Integer.parseInt(cellsEditor.getText().toString());  Intent intent = new Intent(); intent.setClass(this, RunActivity.class); intent.putExtra(RunActivity.EXT_COLS, cols); intent.putExtra(RunActivity.EXT_ROWS, rows); intent.putExtra(RunActivity.EXT_CELLS, cells);  startActivity(intent); finish(); > 

Итак, мы передали в наш Intent дополнительные параметры. Теперь мы получим их в RunActivity в методе onCreate :

RunActivity.java

public void onCreate(Bundle savedInstanceState)  super.onCreate(savedInstanceState); setContentView(R.layout.run); Bundle extras = getIntent().getExtras(); int cols = extras.getInt(EXT_COLS); int rows = extras.getInt(EXT_ROWS); int cells = extras.getInt(EXT_CELLS); TextView message = (TextView)findViewById(R.id.message); message.setText("Rows: " + rows + "\nColumns: " + cols + "\nCells: " + cells); > 

Заключение

Итак, мы добавили в наше приложение ещё одну форму, создали переход на неё и передали параметры из первой формы.
Исходники примера

Источник

Оцените статью