2016-10-23 31 views
-2

如何在jButton中使用java类?这是我想要与按钮链接的代码。此代码将发现蓝牙设备,并将发送一个文本文件到连接的设备。我用bluecove库。如何使用JButton下的java类?

import java.io.OutputStream; 
import java.util.ArrayList; 

import javax.bluetooth.DataElement; 
import javax.bluetooth.DeviceClass; 
import javax.bluetooth.DiscoveryAgent; 
import javax.bluetooth.DiscoveryListener; 
import javax.bluetooth.LocalDevice; 
import javax.bluetooth.RemoteDevice; 
import javax.bluetooth.ServiceRecord; 
import javax.bluetooth.UUID; 
import javax.microedition.io.Connector; 
import javax.obex.ClientSession; 
import javax.obex.HeaderSet; 
import javax.obex.Operation; 
import javax.obex.ResponseCodes; 


public class MyDiscoveryListener implements DiscoveryListener{ 

private static Object lock=new Object(); 
public ArrayList<RemoteDevice> devices; 

public MyDiscoveryListener() { 
    devices = new ArrayList<RemoteDevice>(); 
} 

public static void main(String[] args) { 

    MyDiscoveryListener listener = new MyDiscoveryListener(); 

    try{ 
     LocalDevice localDevice = LocalDevice.getLocalDevice(); 
     DiscoveryAgent agent = localDevice.getDiscoveryAgent(); 
     agent.startInquiry(DiscoveryAgent.GIAC, listener); 

     try { 
      synchronized(lock){ 
       lock.wait(); 
      } 
     } 
     catch (InterruptedException e) { 
      e.printStackTrace(); 
      return; 
     } 


     System.out.println("Device Inquiry Completed. "); 


     UUID[] uuidSet = new UUID[1]; 
     uuidSet[0]=new UUID(0x1105); //OBEX Object Push service 

     int[] attrIDs = new int[] { 
       0x0100 // Service name 
     }; 

     for (RemoteDevice device : listener.devices) { 
      agent.searchServices(
        attrIDs,uuidSet,device,listener); 


      try { 
       synchronized(lock){ 
        lock.wait(); 
       } 
      } 
      catch (InterruptedException e) { 
       e.printStackTrace(); 
       return; 
      } 


      System.out.println("Service search finished."); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 



@Override 
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass arg1) { 
    String name; 
    try { 
     name = btDevice.getFriendlyName(false); 
    } catch (Exception e) { 
     name = btDevice.getBluetoothAddress(); 
    } 

    devices.add(btDevice); 
    System.out.println("device found: " + name); 

} 

@Override 
public void inquiryCompleted(int arg0) { 
    synchronized(lock){ 
     lock.notify(); 
    } 
} 

@Override 
public void serviceSearchCompleted(int arg0, int arg1) { 
    synchronized (lock) { 
     lock.notify(); 
    } 
} 

@Override 
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { 
    for (int i = 0; i < servRecord.length; i++) { 
     String url = servRecord[i].getConnectionURL(ServiceRecord.AUTHENTICATE_NOENCRYPT, true); 
     if (url == null) { 
      continue; 
     } 
     DataElement serviceName = servRecord[i].getAttributeValue(0x0100); 
     if (serviceName != null) { 
      System.out.println("service " + serviceName.getValue() + " found " + url); 
      sendMessageToDevice(url); 
      if(serviceName.getValue().equals("OBEX Object Push")){ 
       sendMessageToDevice(url);     
      } 
     } else { 
      System.out.println("service found " + url); 
     } 


    } 
} 

private static void sendMessageToDevice(String serverURL){ 
    try{ 
     System.out.println("Connecting to " + serverURL); 

     ClientSession clientSession = (ClientSession) Connector.open(serverURL); 
     System.out.println(clientSession.toString()); 
     HeaderSet hsConnectReply = clientSession.connect(null); 
     System.out.println("Reply: " + hsConnectReply.toString()); 
     if (hsConnectReply.getResponseCode() != ResponseCodes.OBEX_HTTP_OK) { 
      System.out.println("Failed to connect"); 
      return; 
     } 

     HeaderSet hsOperation = clientSession.createHeaderSet(); 
     hsOperation.setHeader(HeaderSet.NAME, "do u want to encrypt/decrypt"); 
     hsOperation.setHeader(HeaderSet.TYPE, "text"); 

     System.out.println("Operation: " + hsOperation.toString()); 
     //Create PUT Operation 
     Operation putOperation = clientSession.put(hsOperation); 
     System.out.println("Putt Operation: " + putOperation.toString()); 
     // Send some text to server 
     byte data[] = "Hello World !!!".getBytes("iso-8859-1"); 
     hsOperation.setHeader(hsOperation.LENGTH, new Long(data.length)); 
     OutputStream os = putOperation.openOutputStream(); 
     System.out.println("Writing the data: " + data[0]); 
     os.write(data); 
     os.close(); 

     putOperation.close(); 

     clientSession.disconnect(null); 

     clientSession.close(); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

} 
+1

你的问题问一种表明你没有在这个主题上搜索教程或类似问题的方法,这不是在这个(或任何网站上)提问的最好方法。请先检查相应的教程。例如,这个简单的[jbutton教程搜索](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=jbutton%20tutorial)将引导您直接访问主要第一次击中教程。 –

+2

那么问题是什么?请阅读[如何创建最小,完整和可验证示例](http://stackoverflow.com/help/mcve) –

回答

2

你做在Java中没有链接。而是创建一个对象,该对象实现接口的动作侦听器。

直接在甲骨文像这样tutorial。一般来说:如果你对Java的知识真的很小 - 请在做其他任何事情之前先考虑学习这些bascis。特别是“UI”相关的Java编码不容易通过反复试验来学习。你应该退后一步,花大量时间学习/理解周围的概念!

0

如果你想创建一个从你的MyDiscoveryListener类执行功能按钮的Java应用程序(例如像调用searchForServices方法),你可以做这样的事情:

import javax.swing.*; 

public class BluetoothButton { 
    public static void main(String[] arguments) { 
     SwingUtilities.invokeLater(() -> new BluetoothButton().createAndShowGui()); 
    } 

    private void createAndShowGui() { 
     JFrame frame = new JFrame("Stack Overflow"); 
     frame.setBounds(100, 100, 800, 600); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

     JButton button = new JButton("Search for services"); 

     button.addActionListener(actionEvent -> { 
      MyDiscoveryListener listener = new MyDiscoveryListener(); 
      listener.searchForServices(); 
     }); 

     frame.getContentPane().add(button); 

     frame.setVisible(true); 
    } 
} 
相关问题