Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 单侧摆动线边框较厚_Java_Swing_Jbutton - Fatal编程技术网

Java 单侧摆动线边框较厚

Java 单侧摆动线边框较厚,java,swing,jbutton,Java,Swing,Jbutton,左侧明显较厚。使用无光边框不会产生这种效果。我想知道的是为什么LineBorder会创建这个而不是MatteBorder 这是一个放置在JPanel中的JButton,然后将其添加到JFrame中 相关代码: package test; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEv

左侧明显较厚。使用无光边框不会产生这种效果。我想知道的是为什么LineBorder会创建这个而不是MatteBorder

这是一个放置在JPanel中的JButton,然后将其添加到JFrame中

相关代码:

package test;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;



public class View extends JPanel{ 

    public View(){
        JPanel displayPanel = new JPanel();
        displayPanel.setBackground(Color.WHITE);
        displayPanel.setSize(500, 500);

        JButton backspace = createButton("\u2190", "backspace", Color.RED, null, new Controller());

        backspace.setOpaque(false);
        backspace.setSize(25, 25);
        backspace.setBorder(new LineBorder(Color.RED, 1));
        backspace.setMinimumSize(new Dimension(25, 25));
        backspace.setPreferredSize(new Dimension(25, 25));

        displayPanel.add(backspace);

        add(displayPanel);
    }


   private JButton createButton (String text, String ac, Color fg, Color bg, ActionListener handler){
       JButton button = new JButton();
       button.setText(text);
       button.setForeground(fg);
       button.setBackground(bg);
       if (ac!= null){
           button.setActionCommand(ac);
       }
       button.setFont(new Font(button.getFont().getName(), button.getFont().getStyle(), 20));
       button.addActionListener(handler);
       return button;
   }

    private class Controller implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            String foo = e.getSource().toString();
            System.out.println(foo);
            //display.setText(button.getActionListeners().toString());

        }

    }

}
主要问题是:

package test;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class Foo{
       public static void main (String args[]){
            final int height = 400;
            final int width =  330;
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
            EventQueue.invokeLater(new Runnable(){


        @Override
        public void run() {
         JFrame frame = new JFrame();
         frame.setSize(330, 400);

         frame.setLocation((screen.width - width )/2, (screen.height - height)/2);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setResizable(false);
         frame.setContentPane(new View());
         frame.setVisible(true);    
       }
      });   
     }
    }
如果我换成

  backspace.setBorder(new MatteBorder(1, 1, 1, 1, Color.RED));
它根据需要显示


是什么导致LineBorder中的厚度不一致?

在百灵鸟中,决定从我的构建路径中删除1.8,然后重新添加相同的库。巴顿现在画得很好


这是在EclipseLuna中,众所周知它有一些构建路径的怪癖(比如JavaFX没有正确导入,除非您也执行上述技巧。)

发布一篇演示此问题的文章。每当我使用LineBorder时,我从未见过这个问题(只是重新测试了一下,仍然没有发现问题)。所以问题可能出在其他代码上。也可能是版本/平台问题。所以SSCCE应该只是框架和按钮,我们应该能够编译和执行代码。应为所有相关代码。请参阅(是)。
应为所有相关代码。
-您测试过吗?不适合我。没有进口商品。没有控制器类。没有“视图”变量。所有代码都应该包含在一个类文件中,我们可以复制/粘贴/编译/测试。@AndrewThompson我尝试使用流布局,它不断地重新调整按钮的大小,而不强迫它保持其形式。这就是其他地方的解决方案。在这种情况下,正确的解决方案是什么?