从数组中读取内容放到按钮里,并创建按钮JAVA
时间: 2024-03-26 14:40:14 浏览: 89
好的,以下是一个示例代码,可以从数组中读取内容放到按钮里,并创建这些按钮。
```java
String[] buttonTexts = {"Button 1", "Button 2", "Button 3", "Button 4"}; // 定义字符串数组,存储按钮文本
Button[] buttons = new Button[buttonTexts.length]; // 创建与按钮文本数量相同的 Button 数组
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new Button(buttonTexts[i]); // 初始化每个按钮,并设置文本
}
```
这段代码定义了一个字符串数组 `buttonTexts`,存储了要显示在按钮上的文本。然后创建一个与字符串数组长度相同的 `Button` 数组 `buttons`,并使用循环初始化每个按钮,并将对应的文本设置为数组中的元素。你可以根据需要修改数组的大小和按钮的属性。
相关问题
1.点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。 2.点击sort按钮,则将文本域中以“DBa”和““RRi”开头的字符串提取出来,放到右边的文本域中。 3.点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。 请用Java图形界面的知识,编写以上软件。
好的,我会尽力回答您的问题。首先,您需要使用Java Swing来创建图形用户界面(GUI)。以下是一个简单的示例代码,具有三个按钮和两个文本区域:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextEditor extends JFrame implements ActionListener {
private JTextArea leftTextArea, rightTextArea;
private JButton readButton, sortButton, saveButton;
public TextEditor() {
// 设置窗口的标题
setTitle("文本编辑器");
// 创建左边的文本区域
leftTextArea = new JTextArea();
JScrollPane leftScrollPane = new JScrollPane(leftTextArea);
leftScrollPane.setPreferredSize(new Dimension(400, 300));
// 创建右边的文本区域
rightTextArea = new JTextArea();
JScrollPane rightScrollPane = new JScrollPane(rightTextArea);
rightScrollPane.setPreferredSize(new Dimension(400, 300));
// 创建三个按钮
readButton = new JButton("读取");
sortButton = new JButton("排序");
saveButton = new JButton("保存");
// 给三个按钮添加事件监听器
readButton.addActionListener(this);
sortButton.addActionListener(this);
saveButton.addActionListener(this);
// 创建面板,将左边的文本区域和读取按钮添加到面板中
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BorderLayout());
leftPanel.add(leftScrollPane, BorderLayout.CENTER);
leftPanel.add(readButton, BorderLayout.SOUTH);
// 创建面板,将右边的文本区域和排序、保存按钮添加到面板中
JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BorderLayout());
rightPanel.add(rightScrollPane, BorderLayout.CENTER);
rightPanel.add(sortButton, BorderLayout.NORTH);
rightPanel.add(saveButton, BorderLayout.SOUTH);
// 将左边和右边的面板添加到窗口中
getContentPane().setLayout(new GridLayout(1, 2));
getContentPane().add(leftPanel);
getContentPane().add(rightPanel);
// 设置窗口的大小和位置
setSize(800, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// 实现事件监听器的方法
public void actionPerformed(ActionEvent e) {
if (e.getSource() == readButton) {
// TODO: 读取文件并显示在左边的文本区域中
} else if (e.getSource() == sortButton) {
// TODO: 排序字符串并显示在右边的文本区域中
} else if (e.getSource() == saveButton) {
// TODO: 将右边的文本保存到文件中
}
}
public static void main(String[] args) {
TextEditor editor = new TextEditor();
editor.setVisible(true);
}
}
```
接下来,您需要实现事件监听器的三个方法,以完成您的要求。
1. 点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。
```java
public void actionPerformed(ActionEvent e) {
if (e.getSource() == readButton) {
// 弹出文件选择对话框
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
// 从选定的文件中读取文本
File file = fileChooser.getSelectedFile();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
reader.close();
leftTextArea.setText(sb.toString());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
```
2. 点击sort按钮,则将文本域中以“DBa”和““RRi”开头的字符串提取出来,放到右边的文本域中。
```java
public void actionPerformed(ActionEvent e) {
if (e.getSource() == sortButton) {
// 从左边的文本区域中获取文本
String text = leftTextArea.getText();
// 将文本按行分割成字符串数组
String[] lines = text.split("\n");
// 从字符串数组中提取以“DBa”和“RRi”开头的字符串
StringBuilder sb = new StringBuilder();
for (String line : lines) {
if (line.startsWith("DBa") || line.startsWith("RRi")) {
sb.append(line);
sb.append("\n");
}
}
// 将提取出来的字符串显示在右边的文本区域中
rightTextArea.setText(sb.toString());
}
}
```
3. 点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。
```java
public void actionPerformed(ActionEvent e) {
if (e.getSource() == saveButton) {
// 弹出文件保存对话框
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
// 写入文本到选定的文件中
File file = fileChooser.getSelectedFile();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(rightTextArea.getText());
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
```
以上就是完整的代码示例,您只需要将它们整合到一起,即可实现您的要求。
1. 点击read按钮,则读入指定txt文档中的内容,显示在第一个文本域(左边文本域中)。 2. 点击sort按钮,则将文本域中以“DBa”和““RRi”开头的字符串提取出来,放到右边的文本域中。 3. 点击save按钮,则将处理过后右边的文本保存到一个新的txt文档中。 请用Java图形界面的知识,编写以上软件。
好的,我明白了。这是一个Java图形界面程序,包含三个按钮和两个文本域。第一个问题是如何实现读取指定txt文档中的内容并显示在左边的文本域中。
首先,需要在界面中添加一个文本域用于显示读入的内容。可以使用JTextArea类来实现。同时,需要添加一个按钮用于触发读取操作。可以使用JButton类来实现。代码示例:
```java
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class MyFrame extends JFrame {
private JTextArea textArea1, textArea2;
private JButton readButton, sortButton, saveButton;
public MyFrame() {
super("My Application");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea1 = new JTextArea();
textArea2 = new JTextArea();
readButton = new JButton("Read");
sortButton = new JButton("Sort");
saveButton = new JButton("Save");
readButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
FileReader fr = new FileReader("path/to/file.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
textArea1.append(line + "\n");
}
br.close();
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
// Add components to the frame
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(textArea1), BorderLayout.CENTER);
getContentPane().add(readButton, BorderLayout.NORTH);
getContentPane().add(new JScrollPane(textArea2), BorderLayout.EAST);
getContentPane().add(sortButton, BorderLayout.SOUTH);
getContentPane().add(saveButton, BorderLayout.WEST);
}
}
```
这里使用了FileReader和BufferedReader类来读取文件内容,并将读取到的文本追加到左边的文本域中。需要将"path/to/file.txt"替换为实际的文件路径。
接下来,需要实现点击“sort”按钮时将以“DBa”和“RRi”开头的字符串提取出来并显示在右边的文本域中。代码示例:
```java
sortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = textArea1.getText();
StringBuilder sb = new StringBuilder();
for (String line : text.split("\n")) {
if (line.startsWith("DBa") || line.startsWith("RRi")) {
sb.append(line + "\n");
}
}
textArea2.setText(sb.toString());
}
});
```
这里使用了String的split()方法将读取到的文本按行分隔成字符串数组,然后遍历数组中的每一行,如果以“DBa”或“RRi”开头就将其追加到右边的文本域中。StringBuilder类用于高效拼接字符串。
最后,需要实现点击“save”按钮时将右边的文本保存到一个新的txt文档中。代码示例:
```java
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
FileWriter fw = new FileWriter("path/to/newfile.txt");
fw.write(textArea2.getText());
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
```
这里使用了FileWriter类将右边的文本写入到一个新的txt文档中。需要将"path/to/newfile.txt"替换为实际的文件路径。
最终的代码实现可以参考以下示例:
```java
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.*;
public class MyFrame extends JFrame {
private JTextArea textArea1, textArea2;
private JButton readButton, sortButton, saveButton;
public MyFrame() {
super("My Application");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea1 = new JTextArea();
textArea2 = new JTextArea();
readButton = new JButton("Read");
sortButton = new JButton("Sort");
saveButton = new JButton("Save");
readButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
FileReader fr = new FileReader("path/to/file.txt");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
textArea1.append(line + "\n");
}
br.close();
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
sortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text = textArea1.getText();
StringBuilder sb = new StringBuilder();
for (String line : text.split("\n")) {
if (line.startsWith("DBa") || line.startsWith("RRi")) {
sb.append(line + "\n");
}
}
textArea2.setText(sb.toString());
}
});
saveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
FileWriter fw = new FileWriter("path/to/newfile.txt");
fw.write(textArea2.getText());
fw.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
// Add components to the frame
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(textArea1), BorderLayout.CENTER);
getContentPane().add(readButton, BorderLayout.NORTH);
getContentPane().add(new JScrollPane(textArea2), BorderLayout.EAST);
getContentPane().add(sortButton, BorderLayout.SOUTH);
getContentPane().add(saveButton, BorderLayout.WEST);
}
public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.setVisible(true);
}
}
```
注意,这里还需要将"path/to/file.txt"和"path/to/newfile.txt"替换为实际的文件路径。
阅读全文