当前位置: 首页 > 知识库问答 >
问题:

在 JApplet 上运行的 JPanel

郗鹏
2023-03-14

我正在设计一个JApplet,基本上这个小程序将允许用户绘制一个二次方程图,并插入x轴和y轴的范围。但要达到这一点,还有很多工作要做。

我还在设计界面的阶段。

以下是我的代码:

import java.awt.Dimension;

import javax.swing.BoxLayout;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;


public class Applet extends JApplet {
    JPanel p1;
    JPanel p2;
    JPanel p3;

    JScrollPane s1;

    public Applet() {

    p1 = new JPanel();
    p2 = new JPanel();
    p3 = new JPanel();

    s1 = new JScrollPane(p3,s1.VERTICAL_SCROLLBAR_ALWAYS,s1.HORIZONTAL_SCROLLBAR_ALWAYS);
    }

    @Override
    public void init() {
    super.init();

    for(int i=0;i<100;i++)
    {
        p3.add(new JButton("Hello"));
        p3.add(new JLabel("blah"));
        p3.add(new JButton("Sup"));
    }

    p1.setPreferredSize(new Dimension(this.getWidth(), this.getHeight()));
    p2.setPreferredSize(new Dimension(this.getWidth(),(int) (this.getHeight()*0.6667)));

    p3.setLayout(new BoxLayout(p3,BoxLayout.PAGE_AXIS));
    s1.setPreferredSize(new Dimension(this.getWidth(),(int)(this.getHeight()*0.33333)));

    p1.add(p2);
    p1.add(s1);

    this.add(p1);
    }

}

共有2个答案

端木澄邈
2023-03-14

>

  • 要使x轴和y轴控件彼此重叠,应该有两个面板,一个面板包含x轴的标签和文本字段,另一个面板则包含y轴的文本字段。然后将它们添加到垂直对齐的面板中。(例如,Box.createVerticalBox()

    您可以将您的graph.java设置为'Plot'和'Refined'按钮的ActionListener。在graph.java的actionPer的方法中,您可以启动重新绘制,从'Control sB'html" target="_blank">实例中收集范围。

    编辑:回应您的评论...

    '如何添加另一个面板以便我将 X 轴放置在 Y 轴上方”

    这可以很简单(在ControlsB.java中):

    b = Box.createHorizontalBox();
    b.add(new JLabel("Please enter range:  "));
    
    Box b0 = Box.createVerticalBox();//create a vertical box to stack the controls
    
    Box b1 = Box.createHorizontalBox(); // create a horizontal box for the x-axis
    
    b1.add(new JLabel(" x-axis "));
    b1.add(new JLabel("from"));
    JTextField f1 = new JTextField("-5");
    f1.setMaximumSize(new Dimension(100,30));
    b1.add(f1);
    b1.add(new JLabel(" to "));
    JTextField f2 = new JTextField("5");
    f2.setMaximumSize(new Dimension(100,30));
    b1.add(f2);
    b1.add(new JLabel(".   "));
    
    Box b2 = Box.createHorizontalBox(); // create a second horizontal box for the y-axis
    b2.add(new JLabel("y-axis "));
    b2.add(new JLabel("from"));
    JTextField f3 = new JTextField("5");
    f3.setMaximumSize(new Dimension(100,30));
    b2.add(f3);
    b2.add(new JLabel("to"));
    JTextField f4 = new JTextField("-5");
    f4.setMaximumSize(new Dimension(100,30));
    b2.add(f4);
    
    b0.add(b1); // add the x-axis to the vertical box
    b0.add(b2); // add the y-axis to the vertical box
    b.add(b0);  // add the vertical box to the parent
    
    b.add(new JButton("Plot"));
    b.add(new JButton("Refine"));
    add(b); //is this necessary?
    }
    

    '以及如何从 ControlsB 实例中收集范围...”

    您应该研究本教程中的< code>ActionListener,以了解如何在单独的类中使按钮单击事件触发操作。

    还有两个批评:

    >

  • 在你的主类 GraphApplet 中,你先创建一个 Box,然后再将它传递到 ControlsA 和 ControlsB 的每个构造函数中。在构造函数中,然后重新分配已传入的 Box。我认为你不需要这样做。要么在 GraphApplet 中创建正确对齐的框,将其传入而不重新分配,要么根本不传入任何内容。

    您的控制A控制B类都扩展了J面板。尽管您在构造函数的末尾将Box容器添加到每个容器中,但您从未将这些控件对象添加到任何父容器中。在您当前的实现中,我建议扩展J面板是不必要的。

  • 贡光明
    2023-03-14

    建议:

      < li >至于将一个组件放在另一个组件的上面,请使用布局管理器,这将有助于实现这一点,例如垂直的方框布局。 < li >为了让您的显示响应数字数据的变化,我建议您使用模型-视图-控制器类型的应用程序设计,以一种易于实现的方式设计您的程序。按下“绘图”或“细化”按钮将触发控制器更新模型的数据。视图或GUI将监听模型变化,当它们发生时,将根据模型的最新数据重新绘制图形。
     类似资料:
    • 我的JApplet在DrawOvalInputs时产生错误。html运行并调用DrawOvalInputs的类文件。到目前为止,我只能将其作为一个实际应用程序使用(这就是为什么main在块引用中)。 我对这个程序的目标是能够在 java 控制台上运行一个.html文件以中等安全设置启动 JApplet,但无论我做什么,它都无法运行。 在来这里之前,我已经浏览了相当多的网页和搜索。遗憾的是,我就是想

    • 问题内容: 我是Java的新手,并且遇到在applet面板中添加图像的问题。我的图像在同一文件夹中。我的小程序可见,没有任何问题,但仅不显示图像。 问题答案: 在接受一个构造函数假定字符串表示的路径和文件名。 只有受信任的applet可以访问,然后只能在客户端文件系统(而不是服务器)上访问。如果这是应用程序资源,则应位于服务器上,并且可以通过URL访问。 请注意,构造函数还将接受URL,而不是上面

    • 我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。 我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。 我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。

    • 问题内容: 我想将JApplet转换为JFrame。我在互联网上找到了一个单词搜索游戏的代码。我想在一个类的演示中使用此代码。但我不想在applet中使用它。我要在此处粘贴的代码大约有7,000个字符。我尝试使用JApplet并扩展JFrame,然后将所有用于初始化的代码放入构造函数(零自变量构造函数)中。这导致大约十个我无法解决的错误。我想制作一个单词搜索游戏,并且找到了一个很好的例子,但是我无

    • 问题内容: 我正在尝试使用websocket调整我的应用程序以使其在GAE上运行,但是在阅读文档时,我没有找到解决此问题的漂亮方法。 使用一个像这样的非常简单的应用程序:https : //github.com/marcosbergamo/gae-nodejs- websocket 这是我尝试使用的示例演示。但是,当我尝试连接到我的websocket时会收到此错误; 跟随有关请求的图像; 问题答案