如何在Swing中reactjs 动态添加组件件

Swing 动态添加控件JTabbedPane
- 我的生活 - ITeye技术网站
import java.awt.BorderL
import java.awt.D
import java.awt.event.ActionE
import java.awt.event.ActionL
import javax.swing.ImageI
import javax.swing.JB
import javax.swing.JF
import javax.swing.JL
import javax.swing.JP
import javax.swing.JTabbedP
public class JDK6TabbedPaneExample {
private JFrame frame = new JFrame();
private JTabbedPane tabbedPane = new JTabbedPane();
private JButton addTabButton = new JButton("Add Tab");
private ImageIcon closeXIcon = new ImageIcon("C:/CloseX.gif");
private Dimension closeButtonS
private int tabCounter = 0;
public JDK6TabbedPaneExample() {
addTabButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
closeButtonSize = new Dimension(closeXIcon.getIconWidth() + 2, closeXIcon.getIconHeight() + 2);
frame.add(tabbedPane, BorderLayout.CENTER);
frame.add(addTabButton, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setMinimumSize(new Dimension(300, 300));
frame.setVisible(true);
public void add() {
final JPanel content = new JPanel();
JPanel tab = new JPanel();
tab.setOpaque(false);
JLabel tabLabel = new JLabel("Tab " + (++tabCounter));
JButton tabCloseButton = new JButton(closeXIcon);
tabCloseButton.setPreferredSize(closeButtonSize);
tabCloseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int closeTabNumber = tabbedPane.indexOfComponent(content);
tabbedPane.removeTabAt(closeTabNumber);
tab.add(tabLabel, BorderLayout.WEST);
tab.add(tabCloseButton, BorderLayout.EAST);
tabbedPane.addTab(null, content);
tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, tab);
public static void main(String[] args) {
JDK6TabbedPaneExample main = new JDK6TabbedPaneExample();
浏览: 47635 次
来自: 上海
用这个读取的时候有几个PDF文件读不出来,请问是程序有什么要提 ...
是httpclient3
你用的是httpclient 3吧,应该不是4吧?
wuxiaoqqqq 写道你好,我用的TermsCompone ...
你好,我用的TermsComponent组件只能返回词,不能返 ...5865人阅读
java 学习(15)
class dynmaicBtnListener implements java.awt.event.ActionListener{
public void actionPerformed(ActionEvent e) {
System.out.println(&new button clicked.&);
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
CenterViewPanel.setLayout(new BoxLayout(CenterViewPanel, BoxLayout.Y_AXIS));
JButton newbtn = new JButton(&MyDynamicButton&);
newbtn.addActionListener(new dynmaicBtnListener ());
CenterViewPanel.add(newbtn);
CenterViewPanel.validate();
CenterViewPanel.repaint();
CenterViewPanel.revalidate();
使用上面的代码可以动态增加控件。
CenterViewPanel 是一个JPanel控件在动态增加控件的时候,必须在add之前调用layout设置方法。不然没有效果。
&CenterViewPanel.setLayout(new BoxLayout(CenterViewPanel, BoxLayout.Y_AXIS));
在add之后要调用
& & & & CenterViewPanel.validate();&
& & & & CenterViewPanel.repaint();&
& & & & CenterViewPanel.revalidate();
去刷新重绘控件。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:904518次
积分:8699
积分:8699
排名:第1742名
原创:78篇
转载:292篇
评论:126条
(2)(2)(4)(6)(1)(5)(7)(3)(2)(6)(8)(7)(6)(3)(3)(4)(8)(17)(10)(7)(7)(5)(15)(8)(12)(9)(7)(8)(9)(8)(1)(2)(2)(16)(58)(72)(4)(1)(8)(2)(2)(2)(1)(1)(1)(1)(1)(1)(1)关于swing中组件的动态刷新问题
Swing中,界面刷新是线程同步的,也就是说同一时间,只有一个线程能执行刷新界面的代码。如果要多次不断地刷新界面,必须在多线程中调用刷新的方法。
//主线程中的代码 & 当点击按钮时会执行&actionPerformed中的代码
在buttonActionPerformed方法中多次调用了setText方法来试图刷新JLabel
buttonActionPerformed方法运行在主线程中,所以每次调用setText都是运行在主线程中,而且是顺序的执行的。在前面几次调用setText后,线程并没有退出,所以界面刷新线程不能获得执行刷新的机会。而当最后一次setText后,线程退出,界面才能执行刷新。所以我们只能看到最后一次setText的值。
因此,要解决这个问题,我们必须把buttonActionPerformed方法中的代码段放到一个单独的线程中执行。这样它就不会使线程阻塞,当每次setText后,界面刷新线程也能得到执行的机会,从而刷新界面。
JButton("按钮");
jl = new JLabel("init",
JLabel.CENTER);
jb.addActionListener(this);
this.add(jb,
BorderLayout.NORTH);
this.add(jl,
BorderLayout.CENTER);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
this.setBounds(0, 0, 400,
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
(e.getActionCommand().equals("按钮"))
TODO Auto-generated method stub&
&new Thread(new Runnable() {
&public void run() { while(true){
&System.out.println("please input the
message");
& InputStreamReader isr=new
InputStreamReader(System.in);
& BufferedReader br=new BufferedReader(isr);
String str="";&
&try { str =
br.readLine();&
&} catch (IOException e1) { // TODO Auto-generated
catch block e1.printStackTrace(); }
&jl.setText(str); &} }
}).start(); // 启动线程
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 react 动态添加组件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信