1.请教前辈们指点DELPHI的学习。
2.JAVA将一个JFrame放入另一个JFrame
3.OSGIç书ç±
请教前辈们指点DELPHI的学习。
1、直接学Delphi没有问题,就像有的物联网开发答辩项目源码人直接学VC一样。但我个人建议先学一下Delphi的echarts 源码解析母语Object Pascal(Delphi不是语言,是编程工具),因为即使你会拖拉控件弄出一个界面,但你迟早有一天还会面临基本的语法问题。网上有些书是介绍Object Pascal的,如Object Pascal 参考手册、Pascal精要等等。
2、天盾源码我是个Delphi业余爱好者,原来有较好的Pascal基础。第一次接触Delphi,用了很短时间大概就摸清了控件之类的学习libreoffice源码玩意。后来才发现,控件不过是初学者摆弄摆弄的玩意,真正深入VCL需要掌握Object Pascal的基本语法和理念。
3、yigo 源码下载至于入门书籍,可以看看台 湾 陈宽达的《Delphi深度历险》,谭浩强的《PASCAL语言程序设计》。大陆作者的书不要买,大部分是互相抄的,或者从人家BBS上摘录下来的,水平很低。这年月,狗都能出书。另外有时间可以看看Delphi自带的源码,很有好处。
JAVA将一个JFrame放入另一个JFrame
1.先下载一个windowbuilder,安装到Eclipse中,就可以很容易做出来图形化的界面设计
源代码如下:
第一个Java文件Menu.java
package output;
import java.awt.BorderLayout;
public class Menu extends JFrame {
private JPanel contentPane;
/
*** Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Menu frame = new Menu();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/
*** Create the frame.
*/
public Menu() {
setTitle("\u7B2C\u4E\u4E2AJFrame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(, , , );
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JDesktopPane desktopPane = new JDesktopPane();
desktopPane.setBackground(Color.ORANGE);
contentPane.add(desktopPane, BorderLayout.CENTER);
JButton btnframe = new JButton("\u7B2C\u4E8C\u4E2AJFrame");
btnframe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
One frame = new One();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
btnframe.setBounds(, , , );
desktopPane.add(btnframe);
JButton btnjframe = new JButton("\u7B2C\u4E\u4E2AJFrame");
btnjframe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Two frame = new Two();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
btnjframe.setBounds(, , , );
desktopPane.add(btnjframe);
}
}
第二个文件One.java
package output;
import java.awt.BorderLayout;
public class One extends JFrame {
private JPanel contentPane;
/
*** Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
One frame = new One();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/
*** Create the frame.
*/
public One() {
setTitle("\u7B2C\u4E8C\u4E2AJFrame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(, , , );
contentPane = new JPanel();
contentPane.setBackground(Color.GREEN);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
}
第三个Java文件
package output;
import java.awt.BorderLayout;
public class Two extends JFrame {
private JPanel contentPane;
/
*** Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Two frame = new Two();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/
*** Create the frame.
*/
public Two() {
setTitle("\u7B2C\u4E\u4E2AJFrame");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(, , , );
contentPane = new JPanel();
contentPane.setBackground(Color.BLUE);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}
}
OSGIç书ç±
1.ãæ·±å ¥ç解OSGi:Equinoxåçãåºç¨ä¸æä½³å®è·µãä½è ï¼å¨å¿æ & è°¢å°æï¼åºçæ¶é´ï¼-2-1.
å 容ç®ä»ï¼æ¬ä¹¦å ±ç« ï¼å4个é¨åã第ä¸é¨åï¼ç¬¬1ç« ï¼ï¼èµ°è¿OSGiï¼ä¸»è¦ä»ç»äºä»ä¹æ¯OSGi以å为ä»ä¹è¦ä½¿ç¨OSGiã第äºé¨åï¼ç¬¬2ï½4ç« ï¼ï¼OSGiè§èä¸åçï¼å¯¹ææ°çOSGi R5.0ä¸çæ ¸å¿è§èè¿è¡äºå ¨é¢ç解读ï¼é¦å 讲解äºOSGi模åç建ç«ãæè¿°ãä¾èµå ³ç³»çå¤çï¼ç¶å讲解äºBundleçå¯å¨åçåè°åº¦ç®¡çï¼æå讲解äºä¸æ¬å°åè¿ç¨æå¡ç¸å ³çå 容ã第ä¸é¨åï¼OSGiæå¡ä¸Equinoxåºç¨å®è·µï¼ç¬¬5ï½ç« ï¼ï¼ä¸ä» 详ç»è®²è§£äºOSGiæå¡çº²è¦è§èåä¼ä¸çº§è§èä¸æ常ç¨çå 个åè§èåæå¡çææ¯ç»èï¼è¿éè¿ä¸ä¸ªåºäºEquinoxçBBSæ¡ä¾æ¼ç¤ºäºEquinoxç使ç¨æ¹æ³ï¼æéè¦çæ¯è¿éè¿æºç åæäºEquinoxå ³é®åè½çå®ç°æºå¶ååçã第åé¨åï¼æä½³å®è·µï¼ç¬¬ï½ç« ï¼ï¼æ»ç»äºå¤§éå ³äºOSGiçæä½³å®è·µï¼å æ¬ä»Bundleå¦ä½å½åã模åååãä¾èµå ³ç³»å¤çå°ä¿æOSGiå¨ææ§ã管çç¨åºå¯å¨é¡ºåºã使ç¨APIåºçº¿ç®¡ç模åçæ¬çåæ¹é¢çå®è·µæå·§ï¼æ¤å¤è¿ä»ç»äºSpring DMçåç以åå¦ä½å¨OSGiç¯èä¸è¿è¡ç¨åºæµè¯ã
2.ãEclipse RCPä¸Spring OSGi:ææ¯è¯¦è§£ä¸æä½³å®è·µã
ä½è ï¼éé³ï¼åºçæ¶é´ï¼-1-1.
å 容ç®ä»ï¼å ¨ä¹¦å ±å3个é¨åï¼åºç¡ç¯ï¼ç¬¬1~5ç« ï¼è¯¦ç»ä»ç»äºä¸Eclipse RCPç¸å ³çä¸ç³»åæ ¸å¿æ¦å¿µãEclipse RCPå¼åç¯å¢çæ建ï¼ä»¥åSWTãJFaceãFormsãNebulaåWindowBuilderçEclipse RCPå¼åæ常ç¨ççé¢ç¼ç¨ææ¯ï¼é«çº§ç¯ï¼ç¬¬6~ç« ï¼ç³»ç»è®²è§£äºEclipse RCPåºç¨å¼åçåºç¡ç¥è¯ãEclipse RCP软件产åå个ç»æé¨åçæ建æ¹æ³ï¼ä»¥åEclipse RCPæ©å±ç使ç¨åæ©å±ç¹çå¼åï¼ææ¡è¿äºææ¯ç¥è¯ç读è å°è½æ建ä¸ä¸ªç»æå®æ´çEclipse RCP软件ï¼å¹¶è§£å³è½¯ä»¶å¼åè¿ç¨ä¸éå°çæ éï¼å®æç¯ï¼ç¬¬~ç« ï¼è¯¦ç»è®²è§£äºEclipse RCPä¸Spring OSGiæ¡æ¶ãHibernate ORMæ¡æ¶ãJPAè§èãMavenå·¥å ·çæ´åï¼ä»¥åå®ä¸Javaç模åå设计ã
3.osgiä¸æ社åº
ç®ä»ï¼ç±å京大å¦è½¯ä»¶å·¥ç¨å½å®¶å·¥ç¨ç 究ä¸å¿â软件ååç åæ¯æææ¯âç»ç»´æ¤çä¸ä¸ªæ¨¡ååå¨æåå¼åææ¯çå ¬ç社åºãåå¦è ãè¿é¶è å大çé½å¯ä»¥å¨è¿éå享ææ¯åç»éªï¼èªç±ç交æµåå¦ä¹ ï¼å¨è´¡ç®åæ¶è·ä¸å å®èªå·±ã为æ´å¤çå¦çãç 究è åä»ä¸è æä¾æ´å¹¿éç交æµå¹³å°ã