如何删除 JLabel 上的边框?
How can I remove border on JLabel?
所以我正在尝试启动一个图形程序,其中我有一个包含多个 JPanel 的 JFrame。 JPanel 需要结合起来创建 1 个图像,但是当我 运行 我的程序时,我看到图像周围有边框。我无法完全区分边框是由保存图像的 JLabel 引起的,还是由于 JPanel 或布局管理器引起的。
如何去除边框?我需要更改布局管理器吗?如果有怎么办?
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class StarryNight {
JFrame backGround;
JPanel rootPanel;
JLabel rootImage;
public StarryNight(){
backGround = new JFrame("Starry Starry Night");
backGround.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backGround.setResizable(false);
backGround.setSize(1000,667);
backGround.getContentPane().setBackground(Color.BLACK);
backGround.setLayout(new BoxLayout(backGround.getContentPane(),BoxLayout.Y_AXIS));
rootPanel = new JPanel();
rootPanel.setSize(1000, 667);
rootPanel.setBackground(Color.BLUE);;
rootImage = new JLabel();
rootImage.setIcon(new ImageIcon(getClass().getResource("Starry Night.jpg")));
rootPanel.add(rootImage);
JPanel jap = new JPanel();
jap.setSize(1000,100);
jap.setBackground(Color.GREEN);
backGround.add(rootPanel);
backGround.add(jap);
backGround.pack();
backGround.setVisible(true);
}
private static void runGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
StarryNight ssn= new StarryNight();
}
public static void main(String args[]){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){
runGUI();
}
});
}
}
rootPanel = new JPanel();
默认情况下,JPanel 使用 FlowLayout
,默认允许 5 个像素 before/after 组件。因此,当您将我们的图像添加到面板时,您会在所有面上看到 5 个像素的 space。
如果您不想要那个 space 然后查看 FlowLayout API 并在组件之间创建一个没有 spaces 的 FlowLayout,然后将该布局添加到 rootPanel。类似于:
rootPanel = new JPanel( new FlowLayout(...) );
所以我正在尝试启动一个图形程序,其中我有一个包含多个 JPanel 的 JFrame。 JPanel 需要结合起来创建 1 个图像,但是当我 运行 我的程序时,我看到图像周围有边框。我无法完全区分边框是由保存图像的 JLabel 引起的,还是由于 JPanel 或布局管理器引起的。
如何去除边框?我需要更改布局管理器吗?如果有怎么办?
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class StarryNight {
JFrame backGround;
JPanel rootPanel;
JLabel rootImage;
public StarryNight(){
backGround = new JFrame("Starry Starry Night");
backGround.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backGround.setResizable(false);
backGround.setSize(1000,667);
backGround.getContentPane().setBackground(Color.BLACK);
backGround.setLayout(new BoxLayout(backGround.getContentPane(),BoxLayout.Y_AXIS));
rootPanel = new JPanel();
rootPanel.setSize(1000, 667);
rootPanel.setBackground(Color.BLUE);;
rootImage = new JLabel();
rootImage.setIcon(new ImageIcon(getClass().getResource("Starry Night.jpg")));
rootPanel.add(rootImage);
JPanel jap = new JPanel();
jap.setSize(1000,100);
jap.setBackground(Color.GREEN);
backGround.add(rootPanel);
backGround.add(jap);
backGround.pack();
backGround.setVisible(true);
}
private static void runGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
StarryNight ssn= new StarryNight();
}
public static void main(String args[]){
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){
runGUI();
}
});
}
}
rootPanel = new JPanel();
默认情况下,JPanel 使用 FlowLayout
,默认允许 5 个像素 before/after 组件。因此,当您将我们的图像添加到面板时,您会在所有面上看到 5 个像素的 space。
如果您不想要那个 space 然后查看 FlowLayout API 并在组件之间创建一个没有 spaces 的 FlowLayout,然后将该布局添加到 rootPanel。类似于:
rootPanel = new JPanel( new FlowLayout(...) );