Java 重新缩放JFrame内容
我正在创建一个Java 重新缩放JFrame内容,java,swing,jframe,layout-manager,Java,Swing,Jframe,Layout Manager,我正在创建一个JFrame,当窗口展开时,我希望内容保持居中,而不是与侧面保持相同的距离。我正在Eclipse上使用WindowBuilder 有没有快速的方法可以做到这一点?一种方法是,让容器使用GridBagLayout并将单个内容添加到容器中而不受任何约束 例如: import java.awt.GridBagLayout; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.UR
JFrame
,当窗口展开时,我希望内容保持居中,而不是与侧面保持相同的距离。我正在Eclipse上使用WindowBuilder
有没有快速的方法可以做到这一点?一种方法是,让容器使用GridBagLayout并将单个内容添加到容器中而不受任何约束 例如:
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class CenteredContent extends JPanel {
public static final String IMG_PATH = "https://duke.kenai.com/iconSized/duke.gif";
public CenteredContent() throws IOException {
URL imgUrl = new URL(IMG_PATH);
BufferedImage img = ImageIO.read(imgUrl);
Icon imgIcon = new ImageIcon(img);
JLabel label = new JLabel(imgIcon);
setLayout(new GridBagLayout());
add(label);
}
private static void createAndShowGui() {
CenteredContent mainPanel = null;
try {
mainPanel = new CenteredContent();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
JFrame frame = new JFrame("CenteredContent");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
一种方法是,让容器使用GridBagLayout并将单个内容无约束地添加到容器中 例如:
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class CenteredContent extends JPanel {
public static final String IMG_PATH = "https://duke.kenai.com/iconSized/duke.gif";
public CenteredContent() throws IOException {
URL imgUrl = new URL(IMG_PATH);
BufferedImage img = ImageIO.read(imgUrl);
Icon imgIcon = new ImageIcon(img);
JLabel label = new JLabel(imgIcon);
setLayout(new GridBagLayout());
add(label);
}
private static void createAndShowGui() {
CenteredContent mainPanel = null;
try {
mainPanel = new CenteredContent();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
JFrame frame = new JFrame("CenteredContent");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
一种方法是,让容器使用GridBagLayout并将单个内容无约束地添加到容器中 例如:
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class CenteredContent extends JPanel {
public static final String IMG_PATH = "https://duke.kenai.com/iconSized/duke.gif";
public CenteredContent() throws IOException {
URL imgUrl = new URL(IMG_PATH);
BufferedImage img = ImageIO.read(imgUrl);
Icon imgIcon = new ImageIcon(img);
JLabel label = new JLabel(imgIcon);
setLayout(new GridBagLayout());
add(label);
}
private static void createAndShowGui() {
CenteredContent mainPanel = null;
try {
mainPanel = new CenteredContent();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
JFrame frame = new JFrame("CenteredContent");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
一种方法是,让容器使用GridBagLayout并将单个内容无约束地添加到容器中 例如:
import java.awt.GridBagLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class CenteredContent extends JPanel {
public static final String IMG_PATH = "https://duke.kenai.com/iconSized/duke.gif";
public CenteredContent() throws IOException {
URL imgUrl = new URL(IMG_PATH);
BufferedImage img = ImageIO.read(imgUrl);
Icon imgIcon = new ImageIcon(img);
JLabel label = new JLabel(imgIcon);
setLayout(new GridBagLayout());
add(label);
}
private static void createAndShowGui() {
CenteredContent mainPanel = null;
try {
mainPanel = new CenteredContent();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
JFrame frame = new JFrame("CenteredContent");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
请参阅以获取更多的ideasSee以获取更多的ideasSee以获取更多的ideasSee以获取更多的ideasSee我找不到该布局。我怎样才能消除限制?@CaffeineToCode:我不确定我是否理解你的问题。你是说你找不到布局?作为核心Java的一部分,“查找”是什么意思?您不必删除约束,只需不添加约束即可。请用谷歌
JavaGridbagLayout教程
——第一次点击。为了澄清,我使用的是EclipseWindowBuilder。没有GridBagLayout,但有一个GridBagLayout。是吗?“我正在使用Eclipse WindowBuilder。”不是。。看来它在利用你。学习如何编写Java,你可能会掌握它。@CaffeineToCode:不,GridLayout和GridBagLayout不一样。您最好手工编写这样的代码,而不要使用代码生成。事实上,我强烈建议您在不熟悉GUI库时不要使用windows builder。先学习库,然后考虑使用代码生成工具,否则你会把自己画在角落里。我找不到那个布局。我怎样才能消除限制?@CaffeineToCode:我不确定我是否理解你的问题。你是说你找不到布局?作为核心Java的一部分,“查找”是什么意思?您不必删除约束,只需不添加约束即可。请用谷歌JavaGridbagLayout教程
——第一次点击。为了澄清,我使用的是EclipseWindowBuilder。没有GridBagLayout,但有一个GridBagLayout。是吗?“我正在使用Eclipse WindowBuilder。”不是。。看来它在利用你。学习如何编写Java,你可能会掌握它。@CaffeineToCode:不,GridLayout和GridBagLayout不一样。您最好手工编写这样的代码,而不要使用代码生成。事实上,我强烈建议您在不熟悉GUI库时不要使用windows builder。先学习库,然后考虑使用代码生成工具,否则你会把自己画在角落里。我找不到那个布局。我怎样才能消除限制?@CaffeineToCode:我不确定我是否理解你的问题。你是说你找不到布局?作为核心Java的一部分,“查找”是什么意思?您不必删除约束,只需不添加约束即可。请用谷歌JavaGridbagLayout教程
——第一次点击。为了澄清,我使用的是EclipseWindowBuilder。没有GridBagLayout,但有一个GridBagLayout。是吗?“我正在使用Eclipse WindowBuilder。”不是。。看来它在利用你。学习如何编写Java,你可能会掌握它。@CaffeineToCode:不,GridLayout和GridBagLayout不一样。您最好手工编写这样的代码,而不要使用代码生成。事实上,我强烈建议您在不熟悉GUI库时不要使用windows builder。先学习库,然后考虑使用代码生成工具,否则你会把自己画在角落里。我找不到那个布局。我怎样才能消除限制?@CaffeineToCode:我不确定我是否理解你的问题。你是说你找不到布局?作为核心Java的一部分,“查找”是什么意思?您不必删除约束,只需不添加约束即可。请用谷歌JavaGridbagLayout教程
——第一次点击。为了澄清,我使用的是EclipseWindowBuilder。没有GridBagLayout,但有一个GridBagLayout。是吗?“我正在使用Eclipse WindowBuilder。”不是。。看来它在利用你。学习如何编写Java,你可能会掌握它。@CaffeineToCode:不,GridLayout和GridBagLayout不一样。您最好手工编写这样的代码,而不要使用代码生成。事实上,我强烈建议您在不熟悉GUI库时不要使用windows builder。先学习库,然后考虑使用代码生成工具,否则你会把自己画在角落里。