Java 带有Applet和JPanel菜单的JFrame
我在JFrame中有一个JPanel和一个小程序,我试着像这样对齐它们: 我几乎松了我的头发,因为它似乎很难对齐 这是我的真实片段: JFrame的开口非常小,只有按钮Java 带有Applet和JPanel菜单的JFrame,java,swing,applet,jpanel,layout-manager,Java,Swing,Applet,Jpanel,Layout Manager,我在JFrame中有一个JPanel和一个小程序,我试着像这样对齐它们: 我几乎松了我的头发,因为它似乎很难对齐 这是我的真实片段: JFrame的开口非常小,只有按钮 final JFrame f = new JFrame(); JPanel appletPanel = new JPanel(); appletPanel.setBackground(Color.RED); JPanel menuPanel = new JPanel(); menuPane
final JFrame f = new JFrame();
JPanel appletPanel = new JPanel();
appletPanel.setBackground(Color.RED);
JPanel menuPanel = new JPanel();
menuPanel.setBackground(Color.BLUE);
f.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
// f.setExtendedState(JFrame.MAXIMIZED_BOTH);
// f.setResizable(false);
int w = Toolkit.getDefaultToolkit().getScreenSize().width;
int h = Toolkit.getDefaultToolkit().getScreenSize().height;
f.setSize(Toolkit.getDefaultToolkit().getScreenSize());
VNCApplet applet = new VNCApplet();
menuPanel.add(new JButton("TEST"));
appletPanel.setSize((int)(w*0.7),h);
menuPanel.setSize((int)(w*0.3),h);
c.gridx = 0;
c.gridy = 0;
f.getContentPane().add(appletPanel,c);
c.gridx = 0;
c.gridy = 1;
f.getContentPane().add(menuPanel,c);
f.pack();
applet.init();
applet.start();
f.setVisible(true);
非常感谢您的关注 使用单个布局(例如
GridBagLayout
或GroupLayout
)可以通过多种方式实现该布局,但我会将其作为布局的组合。像这样:
import java.awt.*;
导入java.awt.image.buffereImage;
导入javax.swing.*;
导入javax.swing.border.EmptyBorder;
导入javax.swing.border.TitledBorder;
公共类appletWithButtonRight{
私有JComponent ui=null;
AppletWithButtonsOnRight(){
initUI();
}
public void initUI(){
如果(ui!=null)返回;
ui=新JPanel(新边界布局(4,4));
ui.setboorder(新标题边框(“边框布局(4,4)”);
JPanel appletPanel=newjpanel(newgridlayout());
appletPanel.setBackground(颜色:红色);
appletPanel.add(新的JLabel(新的图像图标(新的BufferedImage(400300,BufferedImage.TYPE_INT_ARGB)));
ui.add(appletPanel);
JPanel menuPanel=newjpanel(newborderlayout());
menuPanel.setBorder(新标题边框(“BorderLayout()”));
添加(菜单面板、边框布局、线条结束);
JPanel buttonPanel=新的JPanel(新的网格布局(0,1,10,10));
按钮面板设置顺序(新标题边框(“网格布局(0,1,10,10)”);
menuPanel.add(按钮面板,边框布局,页面开始);
对于(int i=1;i1)f.pack();applet.init();applet.start();f.setVisible(true);
应该是applet.init();applet.start();f.pack();f.setVisible(true);
调用pack()
将框架设置为显示其包含的组件所需的最小大小。但小程序在调用init()
方法之前不会添加组件。2)要获得更好的帮助,请尽快发布或。3)请参阅(是)
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
public class AppletWithButtonsOnRight {
private JComponent ui = null;
AppletWithButtonsOnRight() {
initUI();
}
public void initUI() {
if (ui!=null) return;
ui = new JPanel(new BorderLayout(4,4));
ui.setBorder(new TitledBorder("BorderLayout(4,4)"));
JPanel appletPanel = new JPanel(new GridLayout());
appletPanel.setBackground(Color.RED);
appletPanel.add(new JLabel(new ImageIcon(new BufferedImage(400, 300, BufferedImage.TYPE_INT_ARGB))));
ui.add(appletPanel);
JPanel menuPanel = new JPanel(new BorderLayout());
menuPanel.setBorder(new TitledBorder("BorderLayout()"));
ui.add(menuPanel, BorderLayout.LINE_END);
JPanel buttonPanel = new JPanel(new GridLayout(0, 1, 10, 10));
buttonPanel.setBorder(new TitledBorder("GridLayout(0,1,10,10)"));
menuPanel.add(buttonPanel, BorderLayout.PAGE_START);
for (int i=1; i<5; i++) {
JButton b = new JButton("Button " + i);
b.setFont(b.getFont().deriveFont(24f));
buttonPanel.add(b);
}
}
public JComponent getUI() {
return ui;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {
}
AppletWithButtonsOnRight o = new AppletWithButtonsOnRight();
JFrame f = new JFrame(o.getClass().getSimpleName());
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.setContentPane(o.getUI());
f.pack();
f.setMinimumSize(f.getSize());
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}