我想在jLabel
内设置dimension(50,75)
JFrame
。
我尝试使用
label.setPreferredSize(new Dimension(50, 75));
但它不起作用。 我怎么能这样做?
答案 0 :(得分:3)
setPreferredSize
确实改变了标签的大小,您应该尝试使用setBorder
方法绘制边框来验证新的大小,但如果您想要大的话,字体大小不会改变字体尝试调用setFont
并设置新的字体大小,这里有一些代码开头:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.LineBorder;
public class Test {
public static void main(String[] args) {
JFrame t = new JFrame();
t.setBounds(100, 100, 500, 400);
JLabel l = new JLabel("Hello");
// new font size is 20
l.setFont(new Font(l.getFont().getName(), l.getFont().getStyle(), 20));
// draw label border to verify the new label size
l.setBorder(new LineBorder(Color.BLACK));
// change label size
l.setPreferredSize(new Dimension(200, 200));
t.getContentPane().setLayout(new FlowLayout());
t.add(l);
t.setVisible(true);
}
}
答案 1 :(得分:0)
简单示例:
class Testing extends JFrame
{
int counter = 1;
javax.swing.Timer timer;
public Testing()
{
setSize(100,50);
setLocation(300,100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel p = new JPanel();
final JLabel label = new JLabel("1",JLabel.CENTER);
label.setBorder(BorderFactory.createLineBorder(Color.BLACK));
Dimension d = label.getPreferredSize();
//label.setPreferredSize(new Dimension(d.width+60,d.height));//<-----------
p.add(label);
getContentPane().add(p);
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent ae){
counter *= 10;
label.setText(""+counter);
if(counter > 1000000) timer.stop();}};
timer = new javax.swing.Timer(1000,al);
timer.start();
}
答案 2 :(得分:-1)
使用JLabel setBounds(x, y, width, height)
方法
移动并调整此组件的大小。左上角的新位置由x和y指定,新大小由宽度和高度指定。
答案 3 :(得分:-1)
您必须使用LayoutManager,然后必须调用包方法。
LayoutManager尝试排列子组件,pack()获取这些子组件的首选大小。
public void pack()
使此窗口的大小适合其子组件的首选大小和布局。如果任一维度小于上一次调用setMinimumSize方法所指定的最小大小,则会自动放大窗口的最终宽度和高度。如果窗口和/或其所有者尚未显示,则在计算首选大小之前,它们都可显示。窗口在计算其大小后进行验证。