Java JButton文本不在图标中,且设置框不工作
我有一个类似这样的面板:Java JButton文本不在图标中,且设置框不工作,java,swing,jpanel,jbutton,layout-manager,Java,Swing,Jpanel,Jbutton,Layout Manager,我有一个类似这样的面板: class A extends JPanel{ private JButton button; A(int width, int height){ setSize(width, height); button = new JButton("text"); button.setIcon(IconLoadedHere); button.setBounds(50, 50, getWidth()/
class A extends JPanel{
private JButton button;
A(int width, int height){
setSize(width, height);
button = new JButton("text");
button.setIcon(IconLoadedHere);
button.setBounds(50, 50, getWidth()/5, getHeight()/5);
button.setBorder(BorderFactory.createEmptyBorder());
add(button);
}
}
public class window extends JFrame{
private JPanel panel;
public window(){
panel = new JPanel();
setTitle("test");
setSize(1280, 720);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void loadA(){
remove(panel);
panel = new A(getWidth(), getHeight());
add(panel);
validate();
}
}
JFrame如下所示:
class A extends JPanel{
private JButton button;
A(int width, int height){
setSize(width, height);
button = new JButton("text");
button.setIcon(IconLoadedHere);
button.setBounds(50, 50, getWidth()/5, getHeight()/5);
button.setBorder(BorderFactory.createEmptyBorder());
add(button);
}
}
public class window extends JFrame{
private JPanel panel;
public window(){
panel = new JPanel();
setTitle("test");
setSize(1280, 720);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void loadA(){
remove(panel);
panel = new A(getWidth(), getHeight());
add(panel);
validate();
}
}
按钮有两个问题:
我想把这篇文章放在图像上,这有可能在图像中间吗?目前它出现在它的左边。解决
出于某些奇怪的原因,setBounds不起作用,按钮总是显示在顶部中间,似乎只有在没有布局的情况下才能使用,有没有其他方法可以将按钮的位置和大小设置为“但是我会优先选择”呢
还有一个问题:
如果我想调整窗口的大小,我该怎么做才能使按钮和文本相应地调整大小?目前只找到了逐个更改它们的解决方案,还有其他方法吗?setBounds仅在使用绝对布局时有效,而JPanel默认使用FlowLayout。要禁用它,我认为是
panel.setLayout(null);
但是,使用绝对布局时,您还必须手动设置x/y/宽度/高度,因此通常最好使用布局。setBounds仅在使用绝对布局时有效,而JPanel默认使用FlowLayout。要禁用它,我认为是
panel.setLayout(null);
但是,对于绝对布局,您还必须手动设置x/y/宽度/高度,因此通常最好使用布局。要控制按钮中文本的显示方式,您应该使用:
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);
这将把文本放在按钮的中心
默认情况下,水平文本位置设置为尾随,这就是为什么它被定位在图标的一侧
对于问题的布局部分,您应该真正阅读。TLDR:使用布局管理器,它们将为您调整大小和定位。要控制文本在按钮中的显示方式,您应该使用:
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);
这将把文本放在按钮的中心
默认情况下,水平文本位置设置为尾随,这就是为什么它被定位在图标的一侧
对于问题的布局部分,您应该真正阅读。TLDR:使用布局管理器,他们将为您调整大小和定位。在我的类名和构造函数顶部,第一个字母应该大写,遵循命名约定。1扩展JFrame和JPanel的理由与扩展“无”的JButton的理由一样多。只使用组件实例,除非添加或覆盖功能,否则不要扩展它们。2拆下面板。。添加面板;验证使用一个。我的类名和构造函数的首字母应该大写,遵循命名约定。1扩展JFrame和JPanel的理由与扩展“无”的JButton的理由一样多。只使用组件实例,除非添加或覆盖功能,否则不要扩展它们。2拆下面板。。添加面板;验证我想补充一点:OSX在使用空布局时往往会彻底失败。使用合适的首选大小处理边界、网格和流可以完成任何事情。或者你可以从gridbag开始,它更难,但更“自由”。如果不推荐绝对布局,那么,我如何将按钮放在我喜欢的任何地方?我想补充一点:OSX在使用空布局时往往会彻底失败。使用合适的首选大小处理边界、网格和流可以完成任何事情。或者你可以从gridbag开始,它更难,但更“自由”。如果不推荐绝对布局,那么,我如何将按钮放在我喜欢的地方?