java图形界面在文本框中输入分数中间用逗号隔开,点击一个按钮在另一个文本框中显示从小到大的结果,在点击一个按钮在另一个文本框在显示从大到小的结且要用接口果
时间: 2024-03-07 08:50:43 浏览: 17
好的,这是一个典型的Java图形界面问题,需要用到接口和事件监听器。我来给您提供一下代码实现:
1. 创建一个接口`ScoreSortListener`,包含两个方法`onSortAsc()`、`onSortDesc()`,分别用于从小到大排序和从大到小排序。
```
public interface ScoreSortListener {
void onSortAsc(List<Integer> scores);
void onSortDesc(List<Integer> scores);
}
```
2. 在窗口类中创建文本框和按钮,并添加事件监听器,将输入的分数转换为列表,并将其传递给接口。
```
public class ScoreWindow extends JFrame {
private List<Integer> scores = new ArrayList<>();
private JTextArea inputArea = new JTextArea();
private JTextArea outputArea = new JTextArea();
private JButton ascButton = new JButton("从小到大排序");
private JButton descButton = new JButton("从大到小排序");
private ScoreSortListener listener;
public ScoreWindow(ScoreSortListener listener) {
this.listener = listener;
// 设置窗口大小和布局
this.setSize(400, 300);
this.setLayout(new BorderLayout());
// 添加输入文本框和输出文本框
JPanel inputPanel = new JPanel(new BorderLayout());
inputPanel.add(new JLabel("请输入分数(用逗号隔开):"), BorderLayout.NORTH);
inputPanel.add(inputArea, BorderLayout.CENTER);
this.add(inputPanel, BorderLayout.NORTH);
JPanel outputPanel = new JPanel(new BorderLayout());
outputPanel.add(new JLabel("排序结果:"), BorderLayout.NORTH);
outputPanel.add(outputArea, BorderLayout.CENTER);
this.add(outputPanel, BorderLayout.CENTER);
// 添加排序按钮
JPanel buttonPanel = new JPanel(new FlowLayout());
buttonPanel.add(ascButton);
buttonPanel.add(descButton);
this.add(buttonPanel, BorderLayout.SOUTH);
// 添加事件监听器
ascButton.addActionListener(e -> {
String input = inputArea.getText();
if (input != null && !input.isEmpty()) {
scores = Arrays.stream(input.split(","))
.map(String::trim)
.map(Integer::valueOf)
.collect(Collectors.toList());
listener.onSortAsc(scores);
}
});
descButton.addActionListener(e -> {
String input = inputArea.getText();
if (input != null && !input.isEmpty()) {
scores = Arrays.stream(input.split(","))
.map(String::trim)
.map(Integer::valueOf)
.collect(Collectors.toList());
listener.onSortDesc(scores);
}
});
}
}
```
3. 在使用窗口的地方实现接口中的方法,用Collections工具类对分数进行排序。
```
public class ScoreSortDemo implements ScoreSortListener {
private ScoreWindow window;
public ScoreSortDemo() {
window = new ScoreWindow(this);
window.setVisible(true);
}
@Override
public void onSortAsc(List<Integer> scores) {
Collections.sort(scores);
window.outputArea.setText(scores.toString());
}
@Override
public void onSortDesc(List<Integer> scores) {
Collections.sort(scores, Collections.reverseOrder());
window.outputArea.setText(scores.toString());
}
}
```
4. 在main方法中启动窗口。
```
public class Main {
public static void main(String[] args) {
new ScoreSortDemo();
}
}
```
这样就完成了Java图形界面中输入分数并排序的功能。