小程序没有显示完整

我刚刚创建了一个applet

public class HomeApplet extends JApplet { private static final long serialVersionUID = -7650916407386219367L; //Called when this applet is loaded into the browser. public void init() { //Execute a job on the event-dispatching thread; creating this applet's GUI. // setSize(400, 400); try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { createGUI(); } }); } catch (Exception e) { System.err.println("createGUI didn't complete successfully"); } } private void createGUI() { RconSection rconSection = new RconSection(); rconSection.setOpaque(true); // CommandArea commandArea = new CommandArea(); // commandArea.setOpaque(true); JTabbedPane tabbedPane = new JTabbedPane(); // tabbedPane.setSize(400, 400); tabbedPane.addTab("Rcon Details", rconSection); // tabbedPane.addTab("Commad Area", commandArea); setContentPane(tabbedPane); } } 

fisrt选项卡的位置是:

 package com.rcon; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import com.Bean.RconBean; import com.util.Utility; public class RconSection extends JPanel implements ActionListener{ /** * */ private static final long serialVersionUID = -9021500288377975786L; private static String TEST_COMMAND = "test"; private static String CLEAR_COMMAND = "clear"; private static JTextField ipText = new JTextField(); private static JTextField portText = new JTextField(); private static JTextField rPassText = new JTextField(); // private DynamicTree treePanel; public RconSection() { // super(new BorderLayout()); JLabel ip = new JLabel("IP"); JLabel port = new JLabel("Port"); JLabel rPass = new JLabel("Rcon Password"); JButton testButton = new JButton("Test"); testButton.setActionCommand(TEST_COMMAND); testButton.addActionListener(this); JButton clearButton = new JButton("Clear"); clearButton.setActionCommand(CLEAR_COMMAND); clearButton.addActionListener(this); JPanel panel = new JPanel(new GridLayout(3,2)); panel.add(ip); panel.add(ipText); panel.add(port); panel.add(portText); panel.add(rPass); panel.add(rPassText); JPanel panel1 = new JPanel(new GridLayout(1,3)); panel1.add(testButton); panel1.add(clearButton); add(panel); add(panel1); // add(panel, BorderLayout.NORTH); // add(panel1, BorderLayout.SOUTH); } @Override public void actionPerformed(ActionEvent arg0) { if(arg0.getActionCommand().equals(TEST_COMMAND)){ String ip = ipText.getText().trim(); if(!Utility.checkIp(ip)){ ipText.requestFocusInWindow(); ipText.selectAll(); JOptionPane.showMessageDialog(this,"Invalid Ip!!!"); return; } String port = portText.getText().trim(); if(port.equals("") || !Utility.isIntNumber(port)){ portText.requestFocusInWindow(); portText.selectAll(); JOptionPane.showMessageDialog(this,"Invalid Port!!!"); return; } String pass = rPassText.getText().trim(); if(pass.equals("")){ rPassText.requestFocusInWindow(); rPassText.selectAll(); JOptionPane.showMessageDialog(this,"Enter Rcon Password!!!"); return; } RconBean rBean = RconBean.getBean(); rBean.setIp(ip); rBean.setPassword(pass); rBean.setPort(Integer.parseInt(port)); if(!Utility.testConnection()){ rPassText.requestFocusInWindow(); rPassText.selectAll(); JOptionPane.showMessageDialog(this,"Invalid Rcon!!!"); return; }else{ JOptionPane.showMessageDialog(this,"Correct Rcon!!!"); return; } } else if(arg0.getActionCommand().equals(CLEAR_COMMAND)){ ipText.setText(""); portText.setText(""); rPassText.setText(""); } } } 

它看起来像

applet截图

已经裁剪了一些数据如何显示它并使applet不可resize。 我试过setSize(400, 400); 但它没有帮助内部区域保持不变,外部边界增加

正如我在评论中提到的,这个问题实际上是关于如何在容器中布局组件 。 此示例假定您希望为文本字段和标签添加额外的空间。 applet的大小在HTML中设置。

200×130 FixedSizeLayout固定为200x130 200×150 FixedSizeLayout固定为200x150

 /*   */ import java.awt.*; import javax.swing.*; public class FixedSizeLayout extends JApplet { public void init() { SwingUtilities.invokeLater(new Runnable() { public void run() { initGui(); } }); } private void initGui() { JTabbedPane tb = new JTabbedPane(); tb.addTab("Rcon Details", new RconSection()); setContentPane(tb); validate(); } } class RconSection extends JPanel { private static String TEST_COMMAND = "test"; private static String CLEAR_COMMAND = "clear"; private static JTextField ipText = new JTextField(); private static JTextField portText = new JTextField(); private static JTextField rPassText = new JTextField(); public RconSection() { super(new BorderLayout(3,3)); JLabel ip = new JLabel("IP"); JLabel port = new JLabel("Port"); JLabel rPass = new JLabel("Rcon Password"); JButton testButton = new JButton("Test"); testButton.setActionCommand(TEST_COMMAND); JButton clearButton = new JButton("Clear"); clearButton.setActionCommand(CLEAR_COMMAND); JPanel panel = new JPanel(new GridLayout(3,2)); panel.add(ip); panel.add(ipText); panel.add(port); panel.add(portText); panel.add(rPass); panel.add(rPassText); JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5)); panel1.add(testButton); panel1.add(clearButton); add(panel, BorderLayout.CENTER); add(panel1, BorderLayout.SOUTH); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { Container c = new RconSection(); JOptionPane.showMessageDialog(null, c); } }); } } 

这是您布局的另一个变体。 使用@Andrew的tag-in-source方法,可以从命令行轻松测试:

 $ /usr/bin/appletviewer HomeApplet.java 

在此处输入图像描述

 //  import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class HomeApplet extends JApplet { @Override public void init() { try { SwingUtilities.invokeAndWait(new Runnable() { @Override public void run() { createGUI(); } }); } catch (Exception e) { e.printStackTrace(System.err); } } private void createGUI() { JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("Rcon1", new RconSection()); tabbedPane.addTab("Rcon2", new RconSection()); this.add(tabbedPane); } private static class RconSection extends JPanel implements ActionListener { private static final String TEST_COMMAND = "test"; private static final String CLEAR_COMMAND = "clear"; private JTextField ipText = new JTextField(); private JTextField portText = new JTextField(); private JTextField rPassText = new JTextField(); public RconSection() { super(new BorderLayout()); JLabel ip = new JLabel("IP"); JLabel port = new JLabel("Port"); JLabel rPass = new JLabel("Rcon Password"); JButton testButton = new JButton("Test"); testButton.setActionCommand(TEST_COMMAND); testButton.addActionListener(this); JButton clearButton = new JButton("Clear"); clearButton.setActionCommand(CLEAR_COMMAND); clearButton.addActionListener(this); JPanel panel = new JPanel(new GridLayout(3, 2)); panel.add(ip); panel.add(ipText); panel.add(port); panel.add(portText); panel.add(rPass); panel.add(rPassText); JPanel buttons = new JPanel(); // default FlowLayout buttons.add(testButton); buttons.add(clearButton); add(panel, BorderLayout.NORTH); add(buttons, BorderLayout.SOUTH); } @Override public void actionPerformed(ActionEvent e) { System.out.println(e); } } } 

applet查看器的大小不依赖于您的代码。

JApplet不是窗口,所以在java代码中你不能编写japplet维度。 您必须更改运行设置。 我不知道其他ide的确切位置,但在Eclipse中你可以在Project Properties – > Run / Debug设置中更改维度 – >点击你的启动配置文件(对我来说只有1 – 主类) – >编辑 – >参数。 在那里,您可以为applet选择宽度和高度。 保存更改,你很高兴