编辑“︁
Marauroa Chat Tutorial/Swing Client
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 编码 == Client类的设计使我们可以轻松地在比上面的Test类更复杂的地方使用它。 这是一个使用客户端作为通讯工具的简单Swing应用程序的示例 <pre> import java.awt.event.*; import javax.swing.*; public class View extends JFrame implements ActionListener { private javax.swing.JButton jSayButton; private javax.swing.JButton jConnectButton; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jChatArea; private javax.swing.JTextField jInputField; private javax.swing.Timer timer; private Client client = null; public View() { initComponents(); jSayButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String message = jInputField.getText(); jInputField.setText(""); client.sendMessage(message); } }); jConnectButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { client = Client.get(); client.connect("127.0.0.1", 5555); client.login("test1", "test1"); client.chooseCharacter("test1"); jSayButton.setEnabled(true); jInputField.setEnabled(true); } catch (Exception exception) { JOptionPane.showMessageDialog( View.this, "Error", exception.toString(), JOptionPane.WARNING_MESSAGE); client = null; } } }); timer = new javax.swing.Timer(300, this); timer.setInitialDelay(500); timer.start(); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (client != null) { client.loop(0); String s = client.popQuote(); while (s != null) { jChatArea.append(s + "\n"); s = client.popQuote(); } } } private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jChatArea = new javax.swing.JTextArea(); jSayButton = new javax.swing.JButton(); jConnectButton = new javax.swing.JButton(); jInputField = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Chat 0.5"); setName("main"); jChatArea.setColumns(20); jChatArea.setEditable(false); jChatArea.setRows(5); jScrollPane1.setViewportView(jChatArea); jSayButton.setText("Say"); jSayButton.setEnabled(false); jConnectButton.setText("Connect"); jInputField.setEnabled(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jInputField, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSayButton, javax.swing.GroupLayout.DEFAULT_SIZE, 73, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jConnectButton))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 249, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jConnectButton) .addComponent(jSayButton) .addComponent(jInputField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); pack(); } } </pre> 为了创建元素的布局,使用了NetBeans,但是我们在这里仅关注源代码。 按下“连接”按钮后,客户端将建立到硬编码位置的连接。 没有“创建新帐户”功能,因此应事先创建帐户。 我们使用计时器来定期检查客户端队列中的新消息。 如果有的话-将它们放在大文本框中。 发送新消息还取决于客户端功能。 现在,留给Swing客户端的唯一方法是main方法。 这是源代码 <pre> public final class Chat { private Chat() {} public static void main( String[] args ) { new View(); } } </pre>
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息