标签:java add swing jpanel jscrollpane
我创建了一个内部带有JPanel的JScrollPane,我想在按下按钮后添加JPanel / JLabel / Other对象.例如,在按下三个按钮后,我想要得到类似以下内容:
我尝试用testlabel.setBounds()尝试myJPane.add(testLabel),但是没有结果,由于大小不变,我不想使用GridLayout.如果添加的对象具有不同的大小,请调整文本内容.
我应该用它做什么?
提前致谢.
最好的祝福,
汤姆.
解决方法:
这是一个JScrollPane内的JPanel,它在按下按钮时向其添加JLabel:
public class Example extends JFrame {
public Example() {
JPanel boxPanel = new JPanel();
boxPanel.setLayout(new BoxLayout(boxPanel, BoxLayout.PAGE_AXIS));
JTextField textField = new JTextField(20);
JButton sendButton = new JButton("Send");
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JLabel label = new JLabel(textField.getText());
label.setOpaque(true);
label.setBackground(Color.RED);
boxPanel.add(label);
boxPanel.add(Box.createRigidArea(new Dimension(0,5)));
textField.setText("");
boxPanel.revalidate();
// pack();
}
});
JPanel southPanel = new JPanel();
southPanel.add(textField);
southPanel.add(sendButton);
add(new JScrollPane(boxPanel));
add(southPanel, BorderLayout.PAGE_END);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new Example();
}
}
BoxLayout将标签堆叠在一起.
笔记:
>必须在标签上调用setOpaque(true)才能使用背景色.
> Box.createRigidArea用于创建间隙.根据需要使用它.
>必须立即调用revalidate()才能立即显示新组件.
>每次调用pack()(在JFrame上)都会调整其大小以适合所有新组件.我将其放在此处进行演示,因为初始帧大小太小,无法显示添加的初始组件.
标签:java,add,swing,jpanel,jscrollpane 来源: https://codeday.me/bug/20191013/1909395.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。