程序根據屏幕分辨率或計算機大小以其大小運行。當我在具有特定尺寸監視器的計算機上運行它時,它會相應地改變。我的問題是JPanel或框架內的任何對象的位置和大小,以便在屏幕大小改變時採用。JPanel的位置和大小根據屏幕大小而變化
因此,無論何時我將在任何具有不同尺寸的顯示器上展示我的程序時,組件仍將按照我最初設計的方式進行組織和放置。但是在這裏我正在使用一個名爲displayMenu的JPanel進行測試。其中它顯示綠色的面板。
package saves.project;
import com.sun.awt.AWTUtilities;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.BorderFactory;
import javax.imageio.ImageIO;
public class Homepage extends JFrame{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Border grayline = BorderFactory.createLineBorder(Color.GRAY);;
int width = screenSize.width, height = screenSize.height;
public Homepage() throws IOException{
super("Homepage");
displayMenu();
displayBackground();
}
public static BufferedImage resize(BufferedImage image, int width, int height) {
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TRANSLUCENT);
Graphics2D g2d = (Graphics2D) bi.createGraphics();
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
g2d.drawImage(image, 0, 0, width, height, null);
g2d.dispose();
return bi;
}
public void displayBackground() throws IOException{
JPanel pBackground = new JPanel();
pBackground.setSize(screenSize);
pBackground.setLayout(new FlowLayout());
add(pBackground);
BufferedImage header = ImageIO.read(new File("res\\bg.jpg"));
BufferedImage resizedImage = resize(header,width,height);
ImageIcon image = new ImageIcon(resizedImage);
JLabel lblheader = new JLabel(image, JLabel.CENTER);
pBackground.add(lblheader);
}
public void displayMenu() {
JPanel pTitle = new JPanel();
pTitle.setLayout(null);
pTitle.setBounds(width/3, (height/2)+20, width/2, height/2);
pTitle.setBackground(Color.GREEN);
add(pTitle);
}
public void CreateAndShowGUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
setVisible(true);
}
}
此外,它看起來像我的背景並沒有完全傳播到整個框架。頂部有一條白線,其餘的是背景。我該怎麼辦?感謝幫助!
不要使用的setSize或組件的setBounds,他們應該留給,佈局管理器。考慮使用GridBagLayout之類的東西來更好地控制佈局。您也可能會發現,當HomePage是構造函數時,組件的大小未知 – MadProgrammer
感謝您的回答!你能提供更多細節嗎?提前致謝^^我只是一個新手在這裏:D – mushroomgroover