import javax.swing.*; import java.awt.*; import java.awt.BorderLayout; import java.awt.event.*; public class ChatClient extends JPanel { private JFrame frame; private JTextArea textArea; private JTextField textField; private JButton sendButton; private JButton quitButton; public ChatClient() { frame = new JFrame("Chat Client"); textArea = new JTextArea(10, 50); textField = new JTextField(50); sendButton = new JButton("send"); quitButton = new JButton("quit"); } public void launchFrame() { JPanel mainPanel = new JPanel(new BorderLayout()); JPanel buttonPanel = new JPanel(new GridLayout(2, 1)); JPanel sendPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); JPanel quitPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); sendPanel.add(sendButton); quitPanel.add(quitButton); buttonPanel.add(sendPanel); buttonPanel.add(quitPanel); mainPanel.add(textArea, BorderLayout.CENTER); mainPanel.add(textField, BorderLayout.SOUTH); mainPanel.add(buttonPanel, BorderLayout.EAST); frame.getContentPane().add(mainPanel); // Add listeners sendButton.addActionListener(new SendButtonListener()); quitButton.addActionListener(new QuitButtonListener()); frame.addWindowListener(new CloseWindowListener()); textField.addActionListener(new EnterKeyListener()); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { ChatClient chatClient = new ChatClient(); chatClient.launchFrame(); } class SendButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { textArea.append(textField.getText() + "\n"); textField.setText(""); } } class QuitButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0); } } class CloseWindowListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } class EnterKeyListener implements ActionListener { public void actionPerformed(ActionEvent e) { textArea.append(textField.getText() + "\n"); textField.setText(""); } }
时间: 2024-04-26 18:21:39 浏览: 9
这段代码实现了一个简单的聊天客户端界面。界面中包括一个文本区域用于显示聊天内容,一个文本框用于输入聊天信息,一个发送按钮和一个退出按钮。用户输入聊天信息后,可以通过点击发送按钮或者按下回车键来发送信息,发送后文本框会清空。点击退出按钮或者关闭窗口可以退出客户端。这个聊天客户端的界面并没有实现网络通信功能,需要通过其他方式来实现与聊天服务器的通信。
相关问题
制作一个Applet小应用程序,设置其布局为BorderLayout,定义一个按钮和多行文本框并分别放到“North”区域和“Center”区域。 import java.awt.*; import java.applet.*; import javax.swing.*; import java.awt.event.*; //声明AppletDemo类,其父类为JApplet,并实现接口ActionListener (1 )
好的,以下是代码实现:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class AppletDemo extends JApplet implements ActionListener {
private JButton button;
private JTextArea textArea;
public void init() {
setLayout(new BorderLayout()); // 设置布局为BorderLayout
button = new JButton("Click Me!"); // 定义一个按钮
button.addActionListener(this); // 添加按钮的监听器
add(button, BorderLayout.NORTH); // 把按钮放到“North”区域
textArea = new JTextArea(); // 定义一个多行文本框
add(textArea, BorderLayout.CENTER); // 把文本框放到“Center”区域
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
textArea.append("Button clicked!\n"); // 按钮被点击时,在文本框中输出信息
}
}
}
```
在上面的代码中,我们使用了JApplet类来创建AppletDemo类,并实现了ActionListener接口来处理按钮的事件。在init()方法中,我们设置了布局为BorderLayout,并定义了一个按钮和一个多行文本框,并把它们放到了“North”和“Center”区域。在actionPerformed()方法中,我们判断事件的来源是否为按钮,并在文本框中输出一条信息。
package test; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Random; public class Test3{ public static void main (String args[]) { Win win=new Win(); win.setTitle("输入序列号"); win.setBounds(10,10,460,360); } } class Police implements KeyListener,FocusListener{ public void keyPressed(KeyEvent e) { JTextField t=(JTextField)e.getSource(); if (t.getCarePosition()>=6) t.transferFocus(); } public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) {} public void focusGained(FocusEvent e) { JTextField text=(JTextField)e.getSource(); text.setText(null); } public void focusLost(FocusEvent e){} } class Win extends JFrame { JTextField text[]=new JTextField[3]; Police police; JButton b; Win() { setLayout(new FlowLayout()); police = new Police(); for(int i=0;i<3;i++) { text[i]=new JTextField(7); text[i].addKeyListener(police); //监视键盘事件 text[i].addFocusListener(police); add(text[i]); } b=new JButton("确定"); add(b); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); text[0].requestFocusInWindow(); } }哪里有错误
代码的缩进格式不够规范,需要进行调整。此外,代码中的一些注释也需要进行调整,以保证清晰易读。以下是修改后的代码:
```
package test;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
public class Test3{
public static void main (String args[]) {
Win win=new Win();
win.setTitle("输入序列号");
win.setBounds(10,10,460,360);
}
}
class Police implements KeyListener,FocusListener{
public void keyPressed(KeyEvent e) {
JTextField t=(JTextField)e.getSource();
if (t.getCarePosition()>=6)
t.transferFocus();
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void focusGained(FocusEvent e) {
JTextField text=(JTextField)e.getSource();
text.setText(null);
}
public void focusLost(FocusEvent e){}
}
class Win extends JFrame {
JTextField text[]=new JTextField[3];
Police police;
JButton b;
Win() {
setLayout(new FlowLayout());
police = new Police();
for(int i=0;i<3;i++) {
text[i]=new JTextField(7);
text[i].addKeyListener(police); //监视键盘事件
text[i].addFocusListener(police);
add(text[i]);
}
b=new JButton("确定");
add(b);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
text[0].requestFocusInWindow();
}
}
```