Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的html代码在Swing';杰布顿偏离中心了吗?_Java_Html_Swing_Jbutton_Centering - Fatal编程技术网

Java 为什么我的html代码在Swing';杰布顿偏离中心了吗?

Java 为什么我的html代码在Swing';杰布顿偏离中心了吗?,java,html,swing,jbutton,centering,Java,Html,Swing,Jbutton,Centering,我的Swing JButton代码如下所示: Insets An_Inset=new Insets(0,0,0,0); String Content="<Html>"+ " <Table Border=1 Cellspacing=0 Cellpadding=2 Width=48>"+ " <Tr><Td Align=Center BgCol

我的Swing JButton代码如下所示:

  Insets An_Inset=new Insets(0,0,0,0);
  String Content="<Html>"+
                         "  <Table Border=1 Cellspacing=0 Cellpadding=2 Width=48>"+
                         "    <Tr><Td Align=Center BgColor=Blue><Font Size=3> + </Font></Td><Td Align=Center><Font Size=3> + </Font></Td></Tr>"+
                         "    <Tr><Td Align=Center><Font Size=3> + </Font></Td><Td Align=Center><Font Size=3> + </Font></Td></Tr>"+
                         "  </Table>"+
                         "</Html>";
  JButton aButton=new JButton(Content);
  aButton.setFont(new Font(Monospaced,0,16));
  aButton.setPreferredSize(new Dimension(56,56));
  aButton.setEnabled(false);
  aButton.setMargin(An_Inset);
  aButton.setHorizontalAlignment(SwingConstants.CENTER);
Insets An_Inset=新的Insets(0,0,0,0);
String Content=“”+
"  "+
"     +  + "+
"     +  + "+
"  "+
"";
JButton aButton=新JButton(内容);
aButton.setFont(新字体(等距,0,16));
邻接。设置首选尺寸(新尺寸(56,56));
aButton.setEnabled(假);
邻接设置边距(插图);
邻接设置水平对齐(SwingConstants.中心);
但“+”标记偏离中心,如何修复

所以有两件主要的事情(可能是3件)

  • 去掉
    setPreferredSize
    ,让按钮根据文本的呈现方式决定其大小
  • 去掉“+”周围的空格,空格不允许文本的居中正确对齐(通过使用任何计算来确定)
  • 你可以考虑去掉<代码> Abutton。StStand(新字体(“MunPasaCd”,0, 16));代码>也是,但这取决于您的需要

因此,左边的一个没有
setFont
,右边的一个有
setFont

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Buttons {

    public static void main(String[] args) {
        new Buttons();
    }

    public Buttons() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new GridBagLayout());
            add(makeButton());
        }

        public JButton makeButton() {
            Insets An_Inset = new Insets(0, 0, 0, 0);
            String Content = "<Html>"
                            + "  <Table Border=1 Cellspacing=0 Cellpadding=2 Width=48>"
                            + "    <Tr><Td Align=Center BgColor=Blue><Font Size=3>+</Font></Td><Td Align=Center><Font Size=3>+</Font></Td></Tr>"
                            + "    <Tr><Td Align=Center><Font Size=3>+</Font></Td><Td Align=Center>+</Font></Td></Tr>"
                            + "  </Table>"
                            + "</Html>";
            JButton aButton = new JButton(Content);
            aButton.setFont(new Font("Monospaced", 0, 16));
//          aButton.setPreferredSize(new Dimension(56, 56));
            aButton.setEnabled(false);
            aButton.setMargin(An_Inset);
            aButton.setHorizontalAlignment(SwingConstants.CENTER);
            return aButton;
        }

    }

}
导入java.awt.EventQueue;
导入java.awt.Font;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.SwingConstants;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类按钮{
公共静态void main(字符串[]args){
新按钮();
}
公共按钮(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
例如printStackTrace();
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
公共测试窗格(){
setLayout(新的GridBagLayout());
添加(makeButton());
}
公共JButton makeButton(){
插图a_插图=新插图(0,0,0,0);
String Content=“”
+ "  "
+ "    ++"
+ "    ++"
+ "  "
+ "";
JButton aButton=新JButton(内容);
aButton.setFont(新字体(“单间距”,0,16));
//邻接处设置首选尺寸(新尺寸(56,56));
aButton.setEnabled(假);
邻接设置边距(插图);
邻接设置水平对齐(SwingConstants.中心);
返回阿布顿;
}
}
}

我有点想知道使用
GridLayout
是否更简单,但我真的不知道您想要实现什么…

首先要摆脱
aButton.setPreferredSize(新维度(56,56))表格的额外填充/边框增加了按钮呈现文本所需的大小,但因为您已经决定可以做得更好,将按钮居中的建议是,使用某个布局管理器重新设计整个内容,以包含Gridlayout等按钮,并在初始化期间将其文本设置为+。感谢您的回答,但我注意到,它错过了最后一个“”标记。我先是在我的问题中漏掉了它,然后你又抄了又漏掉了,我只是修正了我的问题。