我在使用Swing时遇到问题,我正在尝试制作日历,并且由于我将JLabel
放在了JPanel
中以及调用函数时显示了日期, setText
可以更改显示日期,以使图像闪烁几毫秒,所有组件均放置在不合适的位置,然后一切正常显示。
即使在我启动应用程序时,图像也会闪烁,并且我注意到每个组件的paintComponent
函数都被调用了三次...
总而言之,我做了一个名为Jpanel
的{{1}},其中包含所有Container
和JLabel
,我确实重写了它们的Jtextfield
来调用{{1} }。
然后,我将容器添加到框架内并显示它。
课堂抽奖:
paintComponent
示例类
setBounds
感谢您的帮助
答案 0 :(得分:-1)
我找到了解决问题的方法。我将解释如果有人遇到与我相同的问题,我将如何解决。
首先,如果要使用setBounds,请确保已将框架的布局设置为null,在我的情况下,我创建了一个JPanel,在其中添加了所有组件,因此将其布局设置为null。
JPanel Container = new JPanel();
JFrame frame = new JFrame("Name of your APP");
Container.setLayout(null);
frame.setLayout(null);
然后编写一个类,扩展您要使用的组件,因此在我的情况下,我编写了以下类
class label extends JLabel{
int x;
int y;
int width;
int height;
public label(String text,int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.setText(text);
this.setBounds(x, y, width,height);
this.setHorizontalAlignment(SwingConstants.CENTER);
}
}
class button extends JButton{
public button(String text,int x, int y,int width,int height){
this.setText(text);
this.setBounds(x, y, width, height);
}
}
class textField extends JTextField{
public textField(int col,int x,int y ,int width,int height){
this.setBounds(x, y, width,height);
this.setColumns(col);
}
}
如果您想控制框架中的所有内容并设置绝对位置,这种方法效果很好。
希望它会有所帮助:)