【问题标题】:Change length of JTextPane array更改 JTextPane 数组的长度
【发布时间】:2014-05-28 08:11:20
【问题描述】:

我想创建一个 JTextPane 数组,它的大小和值在我的程序执行期间会发生变化,例如 arrayList。 是否可以像 arrayList 那样做?

我有两个 JFrame。在第一帧中,我有一个包含大约 100 个项目的 JList。 选择任何项目后,我想通过拖放将它们粘贴到第二帧。 第二个框架有一个 GridBagLayout,因此我想将每个选定的项目粘贴到 删除项目后的 JTextPane 数组。

我想使用 JTextPane,因为我想格式化所选文本。

【问题讨论】:

  • “我想创建一个 JTextPane 数组..” 为什么?您尝试使用此数组实现的应用程序功能是什么?
  • @Andrew:我已经编辑了我的问题
  • 为什么不使用arraylist?
  • @Arijit:正如我在问题中提到的,我需要 JTextPane 因为我想格式化文本。因此,我需要 JTextPane 的 arrayList 之类的东西
  • 发布 MCVE 以获得快速解答。

标签: arrays swing dynamic arraylist jtextpane


【解决方案1】:

现在我找到了解决方案,我的代码似乎可以工作:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class RefreshPanel {

private JFrame frame = new JFrame();
private JPanel panel = new JPanel();
private JTextPane [] textPane;
private JScrollPane scrollbar;
private ArrayList arrayList = new ArrayList();
private JButton newItem = new JButton("new");
private int counter=0;
private GridBagLayout gbl = new GridBagLayout();

RefreshPanel() {        
    panel.setBackground(Color.WHITE);
    panel.setLayout(gbl);                       
    panel.setPreferredSize(new Dimension(100,50));

    scrollbar = new JScrollPane(panel);

    addButtonListener();        

    createFrame();
} //constructor

public void addButtonListener() {
    newItem.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            arrayList.add("data");
            textPane = new JTextPane[arrayList.size()];
            for(int i=0;i<arrayList.size();i++) {
                textPane[i]=new JTextPane();
                textPane[i].setText((String) arrayList.get(i));
                addComponent(panel, gbl, textPane[i], 1, counter, 1, 1,1,1);
                counter++;
            }               
        }           
    });
}

public void addComponent(Container cont, 
         GridBagLayout gbl, 
         Component c,
         int x, int y,
         int width, int height,
         double weightx, double weighty) {

    GridBagConstraints gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.HORIZONTAL;
    gbc.gridx = x; gbc.gridy = y;
    gbc.gridwidth = width; gbc.gridheight = height;
    gbc.weightx = weightx; gbc.weighty = weighty;
    gbl.setConstraints( c, gbc );
    cont.add( c );
}
public void createFrame() {
    frame.getContentPane().setLayout(new FlowLayout());
    frame.add(scrollbar);
    frame.add(newItem);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(new Dimension(300,300));
    frame.setVisible(true);
}
public static void main(String [] args) {
    new RefreshPanel();
}       
}

但是有一点不起作用:当我改变框架的大小时,项目出现了,但我不知道为什么......有什么想法吗?

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2023-04-02
    • 2018-08-24
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多