按下按钮,然后在java中的新窗口中打开一个文件 [英] press a button and open a file in a new window in java
本文介绍了按下按钮,然后在java中的新窗口中打开一个文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经创建了一个JFrame,并放置一个文本框和button.in文本框中,我已经从文本文件中读取一个名字。现在我想单击按钮,并打开一个知道窗口,我想把名称+
这里是我的代码:
这是我的主框架
package Frontend;
导入Business.ShowDetails;
导入模型。*;
import java.awt。*;
import java.awt.event。*;
import java.io. *;
import java.util。*;
import javax.swing。*;
public class Gui {
// String file =;
私有JFrame框架;
private JPanel panel1;
private JPanel panel2;
私人JPanel面板;
private JTextField nume1;
private JTextField nume2;
private JTextField nume3;
private JTextField nume4;
private JTextField nume5;
私人JButton edit1;
私人JButton edit2;
私人JButton edit3;
私人JButton edit4;
私人JButton edit5;
private final String file =Persoane.txt;
public Gui(){
fereastra();
readFile(file);
$ b $ public void fereastra(){
frame = new JFrame();
panel = new JPanel(new FlowLayout());
panel1 = new JPanel(new GridLayout(5,2,1,7));
panel2 = new JPanel(new GridLayout(5,2,1,1));
nume1 = new JTextField(15);
nume2 = new JTextField(15);
nume3 = new JTextField(15);
nume4 = new JTextField(15);
nume5 = new JTextField(15);
edit1 = new JButton(Edit);
edit2 = new JButton(Edit);
edit3 = new JButton(Edit);
edit4 = new JButton(Edit);
edit5 = new JButton(Edit);
panel1.add(nume1);
panel2.add(edit1);
panel1.add(nume2);
panel2.add(edit2);
panel1.add(nume3);
panel2.add(edit3);
panel1.add(nume4);
panel2.add(edit4);
panel1.add(nume5);
panel2.add(edit5);
ButtonHandler handler = new ButtonHandler();
edit1.addActionListener(handler);
edit2.addActionListener(handler);
panel.add(panel1);
panel.add(panel2);
frame.add(panel);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setSize(300,200);
frame.setVisible(true);
public String readFile(String filename){
try {
String line =;
Persoana p;
BufferedWriter bw = null;
ArrayList< Persoana> listOfPersons;
// creez o lista de persoane
listOfPersons = new ArrayList< Persoana>();
// citesc fisierul Persoane.txt
FileReader file1 = new FileReader(filename);
BufferedReader br1 = new BufferedReader(file1); ((line = br1.readLine())!= null){
// cancel primaine linie din fisier
if(!line.trim( ).contains(ID)){
String [] attributes = line.split(;); // separ fiecare linie in tokenuri
p = new Persoana(); // make a new person
p.setId(Integer.parseInt(attributes [0]));
p.setNume(attributes [1]);
p.setPrenume(attributes [2]);
p.setDataNasterii(attributes [3]);
p.setProfesie(attributes [4]);
listOfPersons.add(p);
}
}
int i = 0;
while(i< listOfPersons.size()){
if(i == 0){
p = listOfPersons.get(i);
nume1.setText(p.getNume()++ p.getPrenume());
nume1.getText();
if(i == 1){
p = listOfPersons.get(i);
nume2.setText(p.getNume()++ p.getPrenume());
nume2.getText();
if(i == 2){
p = listOfPersons.get(i);
nume3.setText(p.getNume()++ p.getPrenume());
nume3.getText();
if(i == 3){
p = listOfPersons.get(i);
nume4.setText(p.getNume()++ p.getPrenume());
nume4.getText();
if(i == 4){
p = listOfPersons.get(i);
nume5.setText(p.getNume()++ p.getPrenume());
nume5.getText();
}
i ++;
}
br1.close();
catch(IOException ex){
System.out.println(Error opening file。);
System.exit(1);
}
返回文件;
//内部类为按钮事件处理
私有类ButtonHandler实现ActionListener {
public void actionPerformed(ActionEvent e){
if(e .getSource()== edit1){
新的ShowDetails();
$ b if(e.getSource()== edit2){
new ShowDetails();
$ b $ / code>
是我的第二个cclass:
package Business;
导入前端。*;
import javax.swing。*;
import java.awt。*;
import java.awt.event。*;
public class ShowDetails extends JFrame {
Gui gui;
public ShowDetails(){
this.gui = gui;
fereastra();
public void fereastra(){
JPanel panel = new JPanel(new GridLayout(2,2));
JTextArea text = new JTextArea();
text.setEditable(true);
text.setText(gui.readFile(Persoane.txt));
text.getText();
panel.add(text);
getContentPane()。add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// setLocation(50,50);
setSize(300,200);
setResizable(false);
// setVisible(true);
show();
$ b 解决方案
- 如果您希望弹出窗口使用
JDialog,请不要创建新的 JFrame
与框架的父代。
- 不要使用
show();
为什么两个 JButtons 为什么使用 FileIO
来传递来自一个<$ c $的值或参数 c> Object
到另一个?
- 我建议使用
CardLayout
来创建弹出窗口。
-
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 来自 class ShowDetails
将关闭当前的JVM实例。
- 不要扩展
JFrame
或 JDialog
或 JWindow
I have created a JFrame and a put a textfield and the button.in the textfield i have put a name read from a text file.know i want click the button and aopen a knew window in which i want to put the name + other information from the same file.
here is my code:
This is my main frame
package Frontend;
import Business.ShowDetails;
import model.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Gui {
//String file=" ";
private JFrame frame;
private JPanel panel1 ;
private JPanel panel2;
private JPanel panel;
private JTextField nume1;
private JTextField nume2;
private JTextField nume3;
private JTextField nume4;
private JTextField nume5;
private JButton edit1;
private JButton edit2;
private JButton edit3;
private JButton edit4;
private JButton edit5;
private final String file = "Persoane.txt";
public Gui(){
fereastra();
readFile(file);
}
public void fereastra(){
frame = new JFrame();
panel = new JPanel(new FlowLayout());
panel1 = new JPanel(new GridLayout(5,2,1,7));
panel2 = new JPanel(new GridLayout(5,2,1,1));
nume1 = new JTextField(15);
nume2 = new JTextField(15);
nume3 = new JTextField(15);
nume4 = new JTextField(15);
nume5 = new JTextField(15);
edit1 = new JButton("Edit");
edit2 = new JButton("Edit");
edit3 = new JButton("Edit");
edit4 = new JButton("Edit");
edit5 = new JButton("Edit");
panel1.add(nume1);
panel2.add(edit1);
panel1.add(nume2);
panel2.add(edit2);
panel1.add(nume3);
panel2.add(edit3);
panel1.add(nume4);
panel2.add(edit4);
panel1.add(nume5);
panel2.add(edit5);
ButtonHandler handler = new ButtonHandler();
edit1.addActionListener(handler);
edit2.addActionListener(handler);
panel.add(panel1);
panel.add(panel2);
frame.add(panel);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
public String readFile(String filename){
try{
String line="";
Persoana p ;
BufferedWriter bw = null;
ArrayList<Persoana> listOfPersons;
//creez o lista de persoane
listOfPersons = new ArrayList<Persoana>();
//citesc fisierul Persoane.txt
FileReader file1 =new FileReader(filename);
BufferedReader br1 = new BufferedReader(file1);
while((line = br1.readLine())!= null){
//elimin prima linie din fisier
if(!line.trim().contains("ID")){
String[] attributes = line.split(";");// separ fiecare linie in tokenuri
p = new Persoana(); // make a new person
p.setId(Integer.parseInt(attributes[0]));
p.setNume(attributes[1]);
p.setPrenume(attributes[2]);
p.setDataNasterii(attributes[3]);
p.setProfesie(attributes[4]);
listOfPersons.add(p);
}
}
int i = 0;
while (i < listOfPersons.size()){
if(i == 0){
p = listOfPersons.get(i);
nume1.setText(p.getNume() + " " +p.getPrenume());
nume1.getText();
}
if(i == 1){
p = listOfPersons.get(i);
nume2.setText(p.getNume() + " " +p.getPrenume());
nume2.getText();
}
if(i == 2){
p = listOfPersons.get(i);
nume3.setText(p.getNume() + " " +p.getPrenume());
nume3.getText();
}
if(i == 3){
p = listOfPersons.get(i);
nume4.setText(p.getNume() + " " +p.getPrenume());
nume4.getText();
}
if(i == 4){
p = listOfPersons.get(i);
nume5.setText(p.getNume() + " " +p.getPrenume());
nume5.getText();
}
i++;
}
br1.close();
}
catch(IOException ex){
System.out.println("Error opening file.");
System.exit(1);
}
return file;
}
// inner class for button event handling
private class ButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == edit1) {
new ShowDetails();
}
if (e.getSource() == edit2) {
new ShowDetails();
}
}
}
}
this is my second cclass:
package Business;
import Frontend.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ShowDetails extends JFrame{
Gui gui;
public ShowDetails(){
this.gui = gui;
fereastra();
}
public void fereastra(){
JPanel panel = new JPanel(new GridLayout(2, 2));
JTextArea text = new JTextArea();
text.setEditable(true);
text.setText(gui.readFile("Persoane.txt"));
text.getText();
panel.add(text);
getContentPane().add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setLocation(50,50);
setSize(300,200);
setResizable(false);
// setVisible(true);
show();
}
}
解决方案
- Don't to create a new
JFrame
, if you want the popup window use JDialog
with parent of the frame.
- Don't use
show();
, because this is long time depreciated method, remove that and un-commented // setVisible(true);
- Why two
JButtons
make the same things?
- Why using
FileIO
for passing value or argument from one Object
to the other?
- I'd suggest to use
CardLayout
instead of to create a popup window.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
from class ShowDetails
will close current JVM instance.
- Don't extend
JFrame
or JDialog
or JWindow
这篇关于按下按钮,然后在java中的新窗口中打开一个文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文