我需要让用户向我的JFrame添加更多文本字段,这样一旦包含的框架的大小是JPanel已超过其原始值,滚动窗格就会介入。 为了能够做到这一点,我提出了一个想法,即放置一个JButton并在点击它时会出现一个新的TextField(这是我最初的想法,这并不一定意味着我是对的)。问题是,一旦我调用ActionListener类添加更多TextFields并最终拉伸其包含面板,程序就会要求我将JPanel设为final,而不允许拉伸面板。换句话说,在我看来,我只是在丛林中殴打,请帮我把它放在一起,下面是我的代码:
public class Button {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel p = new JPanel(new GridLayout(0, 5));
JScrollPane jsp = new JScrollPane(p);
jsp.setPreferredSize(new Dimension(300,300));
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
JButton but = new JButton("Add");
f.add(but);
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int height=0;
JTextField jtx = new JTextField();
jtx.setSize(new Dimension(70,20));
jtx.setPreferredSize(new Dimension(70,20));
p.add(jtf);
height+=20;
p.setSize(new Dimension(300, height));
p.setPreferredSize(new Dimension(300, height));
}
});
f.add(jsp, BorderLayout.CENTER);
f.setLocation(300, 300);
f.setVisible(true);
f.pack();
}
}
答案 0 :(得分:0)
我会给你一个想法:你可以添加按钮,在按钮指令内你会添加一个创建文本字段的指令集。如果你不止一次,你必须处理位置指针,告诉你用户添加文本字段的最后位置,然后通过更新指针,用户可以在不同的地方看到文本,如果你想让用户控制文本的位置然后他必须进入该位置。