我在尝试使用String将JButton添加到JTextPane时遇到问题。所以我要做的是在for循环中添加每个String,然后在添加了String后添加广告JButton。 下面的代码是我想要完成的。
ArrayLst<String> data = new ArrayList();
data.add("Data here");
data.add("Data here 2");
data.add("Data here 3");
data.add("Data here 4");
Container cp = getContentPane();
JTextPane pane = new JTextPane();
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setBold(set, true);
pane.setBackground(Color.BLUE);
pane.setEditable(false);
Document doc = pane.getStyledDocument();
for(int i=0; i<data.size(); i++)
{
doc.insertString(doc.getLength(), data.get(i)+ "\n", set);
pane.insertComponent(new JButton("View Info"));
}
有人能告诉我如何在同一行的每个字符串中添加JButton吗?
非常感谢
答案 0 :(得分:4)
你可以这样试试:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
class TextPaneDemo extends JFrame
{
public void createAndShowGUI()throws Exception
{
JTextPane tp = new JTextPane();
ArrayList<String> data = new ArrayList();
data.add("Data here");
data.add("Data here 2");
data.add("Data here 3");
data.add("Data here 4");
getContentPane().add(tp);
setSize(300,400);
StyledDocument doc = tp.getStyledDocument();
SimpleAttributeSet attr = new SimpleAttributeSet();
for (String dat : data )
{
doc.insertString(doc.getLength(), dat, attr );
tp.setCaretPosition(tp.getDocument().getLength());
tp.insertComponent(new JButton("Click"));
doc.insertString(doc.getLength(), "\n", attr );
}
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
TextPaneDemo tpd = new TextPaneDemo();
try
{
tpd.createAndShowGUI();
}
catch (Exception ex){}
}
});
}
}
答案 1 :(得分:2)
任何人都可以告诉我如何将JButton添加到每个字符串上 同一条线?
LineSeparator ("\n")
doc.insertString(doc.getLength(), data.get(i)+ "\n", set);
伪代码可能是
for (int i = 0; i < data.size(); i++) {
try {
doc.insertString(doc.getLength(), data.get(i), set);
textPane.insertComponent(new JButton("View Info"));
doc.insertString(doc.getLength(), "\n", set);
} catch (BadLocationException ex) {
}
}