Java 框架顶部的空白..我不';我不知道如何解决这个问题
这是我的代码。我有一些问题,我不知道如何解决,所以看Java 框架顶部的空白..我不';我不知道如何解决这个问题,java,swing,user-interface,Java,Swing,User Interface,这是我的代码。我有一些问题,我不知道如何解决,所以看 package testdnevnik; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.s
package testdnevnik;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class StartWindow extends JPanel {
JPanel jp = new JPanel();
JPanel jp1 = new JPanel();
JLabel jl = new JLabel();
JLabel headline = new JLabel();
JButton viewStudents = new JButton();
JButton editStudents = new JButton();
JButton addStudents = new JButton();
JButton removeStudents = new JButton();
public StartWindow () {
jp.setLayout(new BorderLayout());
// image for background
jl.setIcon(new ImageIcon("img\\bg2.jpg"));
jl.setPreferredSize(new Dimension(800,600));
jl.setMaximumSize(new Dimension(800,600));
jl.setMinimumSize(new Dimension(800,600));
jl.setSize(800, 600);
// headline
headline.setText("Diary");
headline.setLocation(200, 30);
headline.setHorizontalAlignment(JLabel.CENTER);
headline.setFont(new Font("Serif", Font.BOLD, 60));
headline.setForeground(Color.ORANGE);
headline.setSize(300, 50);
headline.setVisible(true);
// Buttons
//View Students - Button
viewStudents.setText("View All Students");
viewStudents.setSize(200,40);
viewStudents.setLocation(250 , 200);
viewStudents.setVisible(true);
// Edit Students - Button
editStudents.setText("Edit Students");
editStudents.setSize(200,40);
editStudents.setLocation(250 , 300);
editStudents.setVisible(true);
// Add Students - Button
addStudents.setText("Add New Students");
addStudents.setSize(200,40);
addStudents.setLocation(250 ,400);
addStudents.setVisible(true);
// Remove Students - Button
removeStudents.setText("Remove Students");
removeStudents.setSize(200,40);
removeStudents.setLocation(250 , 500);
removeStudents.setVisible(true);
// panel
jp.setPreferredSize(new Dimension(800,600));
jp.setMaximumSize(new Dimension(800,600));
jp.setMinimumSize(new Dimension(800,600));
jp.setSize(800, 600);
jp1.add(viewStudents); // add ViewStudents button to the panel
jp1.add(editStudents); // add EditStudents button to the panel
jp1.add(addStudents); // add AddStudents button to the panel
jp1.add(removeStudents); // add RemoveStudents button to the panel
jp1.add(headline); // add headline label to the panel
jp.add(jl); // add background image to the panel
add(jp);
add(jp1);
validate();
}
public void checkStudents(int n) {
int numberOfStudents = n;
if (numberOfStudents == 0) {
removeStudents.setEnabled(false);
}
}
}
这是主要课程
package testdnevnik;
import javax.swing.JFrame;
public class Diary {
StartWindow startWindow = new StartWindow();
JFrame frame = new JFrame("Diary");
int n = 0;
public Diary() {
startWindow.checkStudents(n);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setResizable(false);
frame.setVisible(true);
frame.add(startWindow);
}
public static void main(String[] args) {
new Diary();
}
}
现在,关于这个问题……为什么我在框架顶部有一个空白?如何修复它
如果有人知道如何修复此问题,请提供帮助。您的背景图像大小是多少
“img\\bg2.jpg”
您正在将帧大小设置为800x600
,因此请确保图像与帧大小相同。或者您可以缩放图像以适合您的帧大小 不要使用setPreferredSize()、setMinimumSize()或setMaximumSize()。标签的大小将是图像的大小
不要使用frame.setSize(…)。而是使用frame.pack(),框架的大小将调整为添加到框架中的组件的首选大小
订单或代码应为:
frame.setResizable( false );
frame.add(startWindow)
frame.pack();
frame.setVisible(true);
最后,我认为主要的问题是您的StartWindow类是一个JPanel,默认情况下使用FlowLayout,默认情况下组件之间使用5像素的间距。您可以使用
setLayout(newborderlayout())更改布局代码>现在顶部将没有间隙。是的,帧大小为800x600,图像分辨率为800x600使用JLabel表示背景似乎完全错误。为什么不创建您自己的JPanel类,该类将在painComponent
方法中的背景上打印图像,并将其实例用作您的面板?