旧的C ++程序员,Java新手,需要有关Swing JFrames的帮助

时间:2013-02-11 09:52:34

标签: java swing packages

我正在构建一个我打算在很多应用程序中重用的软件包。 这个软件包包含一个"串口管理器":无论我构建什么应用程序,我总是需要设置通信端口和相关参数。

有一种方法可以在包中包含所有需要代码的JFrame(或整个表单?),因此每当应用程序需要设置端口时,它会调用包中的方法,并且模态形式会出现吗?

......我希望一直清楚......

3 个答案:

答案 0 :(得分:1)

这更适合模态组件,例如JDialogJOptionPane。从我怀疑你的意思来说,两者都会“阻止”。

有关详细信息,请参阅How to Use Modality in Dialogs

答案 1 :(得分:1)

GUI示例:

public class PortConfiguration extends JDialog() {
    private int baudrate;
    private String moreStuff;

    //show window, events and more
    public PortConfiguration() {
        super(null,true);
        this.setVisible( false );
        //GUI creation...
    }

    //get configuration:
    public int getBaudrate() {}
    public String getStuff() {}
}

港口实施:

public class Port {
    public Port( int baudrate, String stuff ) {
        //create, open port...
    }
}

然后你可以在需要时使用它们:

PortConfiguration portGUI = new PortConfiguration();
portGUI.setVisible( true );
Port p = new Port( portGUI.getBaudrate(), portGUI.getStuff() );

关于套餐: 您可以为GUI类创建一个主包(serialport),其中包含'subpackage'dialogPort类将位于主程序包serialport

答案 2 :(得分:0)

不确定

public class SerialPortManagerFrame extends JFrame
{
    private final JTextField baudRateTextField;
    // More controls here

    public SerialPortManagerFrame (int baudRate /* Other parameters here */)
    {
        super ("Serial Port Manager");

        baudRateTextField.setText (String.valueOf (baudRate));
        // Initialize other fields here

        getContentPane.setLayout (new BorderLayout ());
        getContentPane.add (baudRateTextField, BorderLayout.NORTH);
        // Other GUI initialization here including
    }

    public int getBaudRate ()
    {
        return Integer.parseInt (baudRateTextField.getText ());
    }

    // Other methods here
}