Applet not appearing full

我怕爱的太早我们不能终老 提交于 2019-11-26 11:38:40

问题


I just created an 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);       
    }
}

where the fisrt tab is:

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(\"\");
        }
    }
}

it appears as

\"applet

is has cropped some data how to display it full and make the applet non resizable as well. i tried setSize(400, 400); but it didnt helped the inner area remains the same and outer boundaries increases


回答1:


As I mentioned in a comment, this question is really about how to layout components in a container. This example presumes you wish to add the extra space to the text fields and labels. The size of the applet is set in the HTML.

200x130

200x150

/*
<applet
  code='FixedSizeLayout'
  width='200'
  height='150'>
</applet>
*/
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);
            }
        });
    }
}



回答2:


Here's another variation on your layout. Using @Andrew's tag-in-source method, it's easy to test from the command line:

$ /usr/bin/appletviewer HomeApplet.java

// <applet code='HomeApplet' width='400' height='200'></applet>
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);
        }
    }
}



回答3:


Size of applet viewer does not depend on your code.




回答4:


JApplet is not window, so in java code you can't write japplet dimensions. You have to change run settings. I don't know where exactly are in other ide's, but in Eclipse you can change dimensions in Project Properties -> Run/Debug settings -> click on your launch configurations file (for me there were only 1 - main class) -> edit -> Parameters. There you can choose width and height for your applet. save changes and you are good to go



来源:https://stackoverflow.com/questions/7454656/applet-not-appearing-full

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!