Codetown ::: a software developer's community
Hello all:
It has been a few months since my last question. Had a lot of other projects taking up my time, but I am back to fighting with my Planetarium lighting controller. I have it working, but I am sure it could be more efficient and prettier to look at.
Since my last post, I finally figured out how to create an object and was able to remove the global variables I had previously created. My application now has two files and not just the long single one primarily generated by NetBeans. This cleaned up my messy code a little, but I know that there is still more I can do. I have been trying to pull some of the functions I created out of the single file, but I am still not getting something right and I get errors. The IDE tells me that it cannot find the function if it is located in a separate file.
I want to have the establishConnection() and sendCommand() functions separated because I can actually use them in other programs that access the lighting control without going through the GUI.
I wanted to have the updateControlPanelLampOn() function separated because it would be easier for me to make changes if I did not have to constantly scroll down to where it starts in the long block of code. When I take this block out, the IDE tells me it cannot find the various controls.
Just not sure what I am doing wrong.
I pasted a portion of the code here and attached it to the post. There is also a screen capture of what the GUI looks like when it is running. If anyone can help, I would appreciate it.
Paul
import ECCS.eccsLampDevice;
import java.io.*;
import java.net.*;
import javax.swing.UIManager.*;
public class BasicRGBWCoveGUIWithOOP extends javax.swing.JFrame {
eccsLampDevice redCove = new eccsLampDevice();
eccsLampDevice grnCove = new eccsLampDevice();
eccsLampDevice bluCove = new eccsLampDevice();
eccsLampDevice rgb0Cove = new eccsLampDevice();
// IO streams.
private DataOutputStream toServer;
private DataInputStream fromServer;
/** Creates new form AdvancedRGBCoveGUI */
public BasicRGBWCoveGUIWithOOP() {
initComponents();
establishConnection();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
// Lots of code generated by NetBeans.
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
// More code here.
}
public final void establishConnection() {
try {
// Create a socket to connect to the server.
Socket socket = new Socket("192.168.10.250", 4760);
// Create an input stream to receive data from the server.
fromServer = new DataInputStream(socket.getInputStream());
// Create an output stream to send data to the server.
toServer = new DataOutputStream(socket.getOutputStream());
}
catch (IOException ex) {
System.err.println(ex);
}
}
public void sendCommand(String eccsCommand) {
try {
toServer.writeBytes(eccsCommand + "\r");
toServer.flush();
}
catch (IOException ex) {
System.err.println(ex);
}
}
public void updateControlPanelLampOn(String deviceCommand, String deviceName) {
if ("A".equals(deviceName)) {
jSliderREDCOVE.setValue(redCove.lampLevel);
jTextFieldREDCOVE.setText(String.valueOf(redCove.lampLevel));
jSliderRGBCOVE.setValue(rgb0Cove.lampLevel);
jTextFieldRGBCOVE.setText(String.valueOf(rgb0Cove.lampLevel));
}
else if ("B".equals(deviceName)) {
jSliderGRNCOVE.setValue(grnCove.lampLevel);
jTextFieldGRNCOVE.setText(String.valueOf(grnCove.lampLevel));
jSliderRGBCOVE.setValue(rgb0Cove.lampLevel);
jTextFieldRGBCOVE.setText(String.valueOf(rgb0Cove.lampLevel));
}
else if ("C".equals(deviceName)) {
jSliderBLUCOVE.setValue(bluCove.lampLevel);
jTextFieldBLUCOVE.setText(String.valueOf(bluCove.lampLevel));
jSliderRGBCOVE.setValue(rgb0Cove.lampLevel);
jTextFieldRGBCOVE.setText(String.valueOf(rgb0Cove.lampLevel));
}
else if ("ABC".equals(deviceName)) {
jSliderREDCOVE.setValue(redCove.lampLevel);
jTextFieldREDCOVE.setText(String.valueOf(redCove.lampLevel));
jSliderGRNCOVE.setValue(grnCove.lampLevel);
jTextFieldGRNCOVE.setText(String.valueOf(grnCove.lampLevel));
jSliderBLUCOVE.setValue(bluCove.lampLevel);
jTextFieldBLUCOVE.setText(String.valueOf(bluCove.lampLevel));
jSliderRGBCOVE.setValue(rgb0Cove.lampLevel);
jTextFieldRGBCOVE.setText(String.valueOf(rgb0Cove.lampLevel));
}
sendCommand(deviceCommand + ":100:" + deviceName);
}
}
Tags:
Codetown is a social network. It's got blogs, forums, groups, personal pages and more! You might think of Codetown as a funky camper van with lots of compartments for your stuff and a great multimedia system, too! Best of all, Codetown has room for all of your friends.
Created by Michael Levin Dec 18, 2008 at 6:56pm. Last updated by Michael Levin May 4, 2018.
Check out the Codetown Jobs group.

AWS has unveiled the preview of its Network Firewall proxy, a managed service that optimizes proxy management and enhances outbound security for VPCs. Integrated with NAT Gateway, this tool inspects traffic through a three-phase model and supports both TLS interception and centralized models via Transit Gateway. Currently available in East Ohio.
By Steef-Jan Wiggers
Cloudflare has open-sourced tokio-quiche, an asynchronous QUIC and HTTP/3 Rust library that wraps its battle-tested quiche implementation with the Tokio runtime to simplify the development of high-performance QUIC applications. The library was used internally to back the edge services, the Oxy HTTP proxies or MASQUE-based tunnels replacing the Wireguard-based tunnels in the WARP client.
By Olimpiu Pop
To improve search and recommendation user experiences, Uber migrated from Apache Lucene to Amazon OpenSearch to support large-scale vector search and better capture search intent. This transition introduced several infrastructure challenges, which Uber engineers addressed with targeted solutions.
By Sergio De Simone
Beth Anderson discusses the "power distance index" and its critical role in communication. Using the Korean Air Flight 801 tragedy as a case study, she explains the dangers of hierarchy-driven silence. She shares actionable frameworks for building the 4 stages of psychological safety, implementing reverse mentoring, and using PRs as tools for knowledge sharing rather than gatekeeping.
By Beth Anderson
Uber’s Ceilometer framework automates infrastructure performance benchmarking beyond applications. It standardizes testing across servers, workloads, and cloud SKUs, helping teams validate changes, identify regressions, and optimize resources. Future plans include AI integration, anomaly detection, and continuous validation.
By Leela Kumili
© 2025 Created by Michael Levin.
Powered by