java JFrame小问题,高手请进!
importjavax.swing.JFrame;importjavax.swing.SwingUtilities;//JFrame工具类publicclassSwing...
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
//JFrame工具类
public class SwingConsole {
public static void run(final JFrame f,final int width,final int height){
SwingUtilities.invokeLater(new Runnable(){
public void run() {
f.setTitle(f.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(250, 150, width, height);
f.setVisible(true);
}
});
}
}
这个类是Think in Java书上的一个工具类,他说一般在main()线程中不对UI进行操作。Swing有他自己的线程来接收UI事件并更新屏幕,如果从其他线程(比如main()线程)进行UI操作可能会产生死锁。而是用Swing的事件分发线程来执行任务,把任务提交给SwingUtilites.invokeLater()来实现这种方式,也就是说main()不调用Swing的方法。
我的问题是:1.、这个工具类有什么用?怎么用?请举列子!2、我要在JFrame中加一个JLabel该怎么做?
请高手解答!瞎说的走开! 展开
import javax.swing.SwingUtilities;
//JFrame工具类
public class SwingConsole {
public static void run(final JFrame f,final int width,final int height){
SwingUtilities.invokeLater(new Runnable(){
public void run() {
f.setTitle(f.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setBounds(250, 150, width, height);
f.setVisible(true);
}
});
}
}
这个类是Think in Java书上的一个工具类,他说一般在main()线程中不对UI进行操作。Swing有他自己的线程来接收UI事件并更新屏幕,如果从其他线程(比如main()线程)进行UI操作可能会产生死锁。而是用Swing的事件分发线程来执行任务,把任务提交给SwingUtilites.invokeLater()来实现这种方式,也就是说main()不调用Swing的方法。
我的问题是:1.、这个工具类有什么用?怎么用?请举列子!2、我要在JFrame中加一个JLabel该怎么做?
请高手解答!瞎说的走开! 展开
2个回答
展开全部
楼主问的话 是没去查看API吧 这个类是 javax.swing 包下边的,具体的我推荐你还是看看API吧 毕竟那个是权威,这些东西应该多自己看看的 ,
这个类集成了很多swing 的实用方法,用到了自己去查就好了。
至于SwingUtilites.invokeLater() 导致 doRun.run() 在 AWT 事件指派线程上异步执行。在所有挂起的 AWT 事件被处理后才发生。此方法应该在应用程序线程需要更新该 GUI 时使用。
你也不必要去强记,一般开发很少用到swing。
例子我就不举了,要写 就要一大串,反正一句话用到去查API就成了!
至于第二个在JFrame加入一个JLabel 也很简单 直接ADD()就成了
不过不在在JFrame 里边add()
代码如下 简写 见谅
public class MyJFrame extends JFrame(){
public MyJFrame(){
JLabel jl = new JLabel("一个标签");
Container contentPanel = this.getContentPane();
contentPanel.add(jl);
}
}
记住 JFrame 里边分为4个层次 显示的再 ContentPane中 这个是内容层,所以一定用个容器装着,就行了
好长时间没用过Swing了 开发的时候很少用到 不过里边的mvc模式 还是很值得学习的 如果有什么记错了的 请和我联系 谢谢
大家一起学习 ,推荐楼主还是多看看一些使用的书 回头再去慢慢啃Thinking in Java 那是一本神书
这个类集成了很多swing 的实用方法,用到了自己去查就好了。
至于SwingUtilites.invokeLater() 导致 doRun.run() 在 AWT 事件指派线程上异步执行。在所有挂起的 AWT 事件被处理后才发生。此方法应该在应用程序线程需要更新该 GUI 时使用。
你也不必要去强记,一般开发很少用到swing。
例子我就不举了,要写 就要一大串,反正一句话用到去查API就成了!
至于第二个在JFrame加入一个JLabel 也很简单 直接ADD()就成了
不过不在在JFrame 里边add()
代码如下 简写 见谅
public class MyJFrame extends JFrame(){
public MyJFrame(){
JLabel jl = new JLabel("一个标签");
Container contentPanel = this.getContentPane();
contentPanel.add(jl);
}
}
记住 JFrame 里边分为4个层次 显示的再 ContentPane中 这个是内容层,所以一定用个容器装着,就行了
好长时间没用过Swing了 开发的时候很少用到 不过里边的mvc模式 还是很值得学习的 如果有什么记错了的 请和我联系 谢谢
大家一起学习 ,推荐楼主还是多看看一些使用的书 回头再去慢慢啃Thinking in Java 那是一本神书
展开全部
1、这个类用来设置JFrame的标题,设置关闭方式,设置大小边界,并负责显示。
public class TestJFrame extends JFrame {
private JTable jtable=new JTable(new Object[][]{{"fylsh",100,"男"},{"fylsh",100,"男"}},new Object[]{"name","age","sex"});
public TestJFrame(){
this.add(jtable);
}
public static void main(String[] args) {
TestJFrame f=new TestJFrame();
SwingConsole.run(f, 600, 400);
}
}
2、例子中已经加了
public class TestJFrame extends JFrame {
private JTable jtable=new JTable(new Object[][]{{"fylsh",100,"男"},{"fylsh",100,"男"}},new Object[]{"name","age","sex"});
public TestJFrame(){
this.add(jtable);
}
public static void main(String[] args) {
TestJFrame f=new TestJFrame();
SwingConsole.run(f, 600, 400);
}
}
2、例子中已经加了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询