我有一个 JApplet,它必须显示 3 个组件。 (2 个 JPanel 和 1 个 Paint 方法)

2024-03-24

我有一个作业,其中我必须允许用户使用二次方程绘制图表。

我设法绘制了图形的骨架,现在我尝试显示“控制面板”以供用户输入值。

我有4个文件:

  • graph.java
  • panel.java
  • panelB.java
  • panelC.java

我的问题是当我运行代码时它只显示panel.java即使在应该显示其他两个面板的容器中也是如此。

面板.java

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.JPanel;


public class panel extends JPanel {

    public panel(){
        this.setBackground(Color.yellow);
    }
}

谁能告诉我应该做哪些改变来解决这个问题?

我对 graph.java 文件做了一些更改:

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.*;

public class GraphApplet extends JApplet{


    public GraphApplet(){
    
    raph p = new Graph();//graph
    
    p.setPreferredSize(new Dimension(760,500));
        conn.add(p,BorderLayout.CENTER);
    }

现在显示的只是图表。

关于其他代码,我也对类名进行了一些更改:

gnjk;.java

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.JPanel;


public class Graph extends JPanel {

public Graph(){
    this.setBackground(Color.yellow);
    }
   
    public void paintComponent(Graphics p) {
    
        super.paintComponent(p);
    
        Graphics2D graph = (Graphics2D)p;
        
        this.setBackground(Color.yellow);//set background color.
        
        int x,y,y1,x1,a,b,p1x,p1y,p2x,p2y;
        
        int xstart = 7;
        int ystart = 1;
        
        int xfinish = 3;

.......

bhfvhn.java

import javax.swing.*;

import java.awt.*;

import javax.swing.JPanel;


public class ControlsA extends JPanel{

public void init (Box g) {
    
    a = Box.createVerticalBox();
    a.add(new JLabel("Please enter the values below:"));
    a.add(new JLabel("h"));
    

}

}

jknmk.java

import javax.swing.*;

import java.awt.Component;
import java.awt.Dimension;

public class ControlsB extends JPanel{

public void init (Box b) {

    b = Box.createHorizontalBox();
    b.add(new JLabel("a"));
    JTextField f1 = new JTextField("0.0");
    f1.setMaximumSize(new Dimension(100,30));
    b.add(f1);


}
}

这是我的项目的更新:

jkl.java

import java.awt.BorderLayout;
import java.awt.Container;

public class GraphApplet extends JApplet{
  public GraphApplet() {
    public void init(){
        SwingUtilities.invokeLater(new Runnable() {
         
         public void run(){
             Container conn = getContentPane();
             conn.setLayout(new BorderLayout());

             Graph z = new Graph();
             conn.add(p,BorderLayout.CENTER);


             fasfae a = new ControlsA(box1);
             conn.add(a,BorderLayout.LINE_START);

            
             adsfawef b = new ControlsB(box2);
             conn.add(b,BorderLayout.PAGE_END);
         }
        });
        }
        }

    
    
    
    /*Container conn = getContentPane();
    conn.setLayout(new BorderLayout());     
    
    Graph p = new Graph();//graph
    
    p.setPreferredSize(new Dimension(460,560));
    conn.add(p,BorderLayout.CENTER);
    
    Box a = new Box(BoxLayout.Y_AXIS);

    a.setPreferredSize(new Dimension(50,50));
    conn.add(a,BorderLayout.EAST);
    
    Box b = new Box(BoxLayout.X_AXIS);
   
    b.setPreferredSize(new Dimension(201,50));
    conn.add(b,BorderLayout.SOUTH);*/
    //this code is commented not to loose it

vtk.java

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.JPanel;


class Graph extends JPanel {

public Graph(){
    this.setBackground(Color.yellow);
}
@Override
public Dimension getPreferredSize(){return (new Dimension(460,560)); }

public void paint(Graphics z) {
    
        
    
        Graphics graph = (Graphics2D)z;
        
       
        this.setBackground(Color.yellow).
        
        int x,y,y1,x1,a,b,p1x,p1y,p2x,p2y;
        
        //line co-ordinates
        //the numbers represent the number of boxes on the graph
        int xstart = 7;
        int ystart = 1;
        
        int x = 3;
        int y = 9;
        
        //other variables
        int i = 0;
        int i2 = 0;
        int m = 0;
        int n = 0;
        int m2 = 0;
        int n2 = 0;
        int f2 = 0;
        int g2 = 1;
        
        //ranges
        int f = 5;
        int g = -5;
        
        //change -ve num to +ve
        int g3 = Math.abs(g);
        
        int a1 = g3 + f;
        int b1 = a1;
        
        a = (Height);
        f = (Width);

        }
    }
}

// 6 variables the user has to input

}
@Override
public Dimension getPreferredSize() {return (new Dimension(200,100));}
}

java

 @Override
 public Dimension getPreferredSize(){return (new Dimension(201,50));}
}

仍然没有任何改善。我无法理解发生了什么事。


该代码的主要问题是:

  1. 该小程序正在添加 3 个实例panel而不是每一个panel, panelB & panelC.
  2. Neither panelB & panelC曾经添加过Box到面板,所以它不会出现。
  3. 你在代码中暗示panelB应垂直对齐,这意味着它更适合LINE_START (WEST) 的BorderLayout,相对于NORTH.
  4. public void paint(Graphics p) {..错误的是panel。自从panel是一个秋千JPanel它应该是public void paintComponent(Graphics p) {..

一旦处理好这些事情,事情可能就是这样的。

其他问题。

  • 唯一需要扩展类的代码是小程序本身,panel。事实上,即使是panel可以更改为显示BufferedImage(图表)内JLabel
  • The panelB and panelC完全是多余的,只需添加一个Box直接到需要的父组件的布局区域。
  • The nomenclature is wrong.
    1. Java类名应该是EachWordUpperCase
    2. 使用有意义的类名 - 小程序可能是GraphApplet, 绘图区域Graph,..我不知道如何称呼最后两个面板,因为它们带有相同的组件。如果只有一个,我可能会称之为Controls作为一个类(这对此来说太过分了),或者controls如果它是一个普通的实例JPanel or Box.
  • 在这种情况下,不建议调用任何设置最大或首选大小的调用。唯一可以做到的情况是图表本身的首选大小,但由于这出现在CENTER对于 applet,建议的尺寸将由 HTML 中指定的 applet 宽度/高度减去其他组件的自然尺寸(CENTER组件将获得“剩余空间”)。

Update

..我该如何更改小程序中的代码,以便小程序添加每个面板之一(?)

Change:

panel a = new panel();//vertical

To:

panelB a = new panelB(new Box(BoxLayout.Y_AXIS));//vertical

是最简单的方法。请注意,如果您决定添加Box直接地。

Box a = new Box(BoxLayout.Y_AXIS);//vertical
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我有一个 JApplet,它必须显示 3 个组件。 (2 个 JPanel 和 1 个 Paint 方法) 的相关文章

  • 带路径压缩算法的加权 Quick-Union

    有一种 带路径压缩的加权快速联合 算法 代码 public class WeightedQU private int id private int iz public WeightedQU int N id new int N iz new
  • java中监视目录变化

    我正在使用 WatchService 来监视目录中的更改 特别是目录中新文件的创建 下面是我的代码 package watcher import java nio file import static java nio file Stand
  • Java Logger 未记录到 Netbeans 中的输出

    我正在 Netbeans 中使用 Maven 启动一个 Java 项目 我编写了一些代码来使用 Logger 类进行日志记录 但是 日志记录似乎不起作用 在程序开始时 我运行 Logger getLogger ProjectMainClas
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 如何在 JavaFX 中连接可观察列表?

    我所说的串联是指获得一个新列表 该列表侦听所有串联部分的更改 方法的目的是什么FXCollections concat ObservableList
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • 什么是抽象类? [复制]

    这个问题在这里已经有答案了 当我了解抽象类时 我说 WT H 问题 创建一个无法实例化的类有什么意义呢 为什么有人想要这样的课程 什么情况下需要抽象类 如果你明白我的意思 最常见的是用作基类或接口 某些语言有单独的interface构建 有
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • 将巨大的模式编译成Java

    有两个主要工具提供了将 XSD 模式编译为 Java 的方法 xmlbeans 和 JAXB 问题是 XSD 模式确实很大 30MB 的 XML 文件 大部分模式在我的项目中没有使用 所以我可以注释掉大部分代码 但这不是一个好的解决方案 目
  • 提供节点名或服务名,或未知 Java

    最近我尝试运行我的 Java 项目 每当我运行它并将其打开到我得到的服务器地址时 Unable to determine host name java net UnknownHostException Caused by java net
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 如何在字段值无效的情况下更改 Struts2 验证错误消息?

    我在 Web 表单上使用 Struts2 验证 如果字段假设为整数或日期 则
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • Log4j2 ThreadContext 映射不适用于parallelStream()

    我有以下示例代码 public class Test static System setProperty isThreadContextMapInheritable true private static final Logger LOGG
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也

随机推荐

  • Azure 云部署失败:找不到带指纹的证书

    我正在开发一个基于 Web API 的 Web 服务 托管在 Azure 上 我正在使用 Azure 1 8 SDK 当我尝试部署云服务时 上传需要很长时间 然后我收到一条错误消息 其中显示 12 09 52 PM Error The ce
  • 在 MS SQL (mssql) 中查找阻塞/锁定查询

    Using sys dm os wait stats我已经确定了我认为的锁定问题 wait type waittime pct running ptc LCK M RS S 2238 54 22 14 22 14 LCK M S 1980
  • 浮点的 == 和 != 全局重载

    重载全局运算符是一种不好的做法吗 and 对于浮点 我在游戏环境中使用快速浮点 并且我正在考虑在任何地方使用模糊比较 因为我无法想象我不希望非常接近的数字不相等的情况 有什么建议吗 你不能 C 运算符重载必须至少涉及一种用户定义的类型 即使
  • 更改重复键阈值 C++

    我正在构建一个 C 俄罗斯方块游戏 不是 C Net 我感觉我的控制很奇怪 我想要做到这一点 以便当用户按下其中一个箭头键时 按住它大约 10 毫秒将启动 Windows 的重复功能 默认设置为 500 毫秒左右 对于我的游戏来说太延迟了
  • Bash shell 脚本检查器

    我必须编写一个脚本 它获取一个文本文件 其中包含 9 行和行中的 9 个数字 1 9 例如 123456789 234567891 345678912 456789123 567891234 678912345 789123456 8912
  • 在 JavaScript 中使用 filter() 查找两个未排序数组的交集的 Big O

    我刚刚开始学习 Big O 表示法 我试图理解不同函数的 Big O 看看哪个更好 我正在努力计算时间和空间复杂度对于以下代码 function findCommonElem arr1 arr2 let result arr1 filter
  • 如何在本地恢复`.git/index`?

    我不小心删除了 git index 有办法恢复吗 它已被永久删除 我还没有做出任何事 要重建索引文件 您可以尝试以下两个命令 git reset re scan the working directory git add u update
  • 任务“:app:kaptDebugKotlin”执行失败。当干净构建时

    我在使用 cmd 构建项目时遇到问题 当我使用 android studio 构建项目时没问题 但是当我清理项目然后使用 cmd 构建时出现错误 这个命令 gradlew assemble调试 这个错误 失败 构建失败并出现异常 什么地方出
  • 将 scala 2.10 future 转换为 scalaz.concurrent.Future // 任务

    有人找到了如何将 scala 的 Future 2 10 正确转换为新的 scalaz7 future 的代码吗 我知道很想通过 scala Promise 将 scalaz future 转换为 scala Future 但不知道如何正确
  • 获取当前正在运行的应用程序

    如何获取当前正在运行的应用程序 我想检查应用程序是否正在运行或不在服务中 我为此使用了以下代码 ActivityManager activityManager ActivityManager this getSystemService AC
  • Swift - Firebase 函数signInWithEmail 在第一次调用时不执行

    IBAction func loginEmailButton sender AnyObject FIRAuth auth signInWithEmail email text password password text completio
  • WPF 中透明背景变黑

    我尝试创建一个带有圆角的窗口 我将窗口背景设置为透明并将边框背景设置为白色 然而 在边框和窗口之间的区域 我得到黑色背景而不是透明背景 我在 Windows 7 上使用 C WPF VS2010 进行开发 下面是我的 XAML 和屏幕截图
  • 将具有循环结构的 JS 对象存储在本地存储中,并在重新加载时获取循环结构

    我想存储 本地存储 HTML5 JS 对象 为此 我必须申请JSON stringify obj 到我想要存储的JS对象 之后我就可以存储该对象localStorage obj JSON stringify obj 但有些 JS 对象非常大
  • 请教 php 总结 01 + 01 = 02

    我想在数据库中创建一个id id user gt 数据类型 varchar 我希望我的 id 从00 01 02 等等 为了创建新的 id 我对所有行进行计数 并且计数的结果将添加 01 Example id array 00 01 02
  • 处理块、完成处理程序、dispatch_async 与dispatch_sync

    我正在线程中执行在线数据获取 并且我想在执行块后立即执行某些操作 这是我的代码 IBAction refresh UIBarButtonItem sender NSLog checking self editToolbar dispatch
  • HM10 ble改变特征值AT命令Arduino

    谁能帮我用AT命令写入特征值 或者如何使用Hm10模块将数据从arduino发送到另一个ble设备 HM10发送AT START后 会通告数据包 并且可以检测服务和特征 但特征值是默认的0x00 如何更改 多次检查数据表 但找不到能够执行相
  • 托管 C++/CLI 类中的 auto_ptr 或 shared_ptr 等效项

    在 C CLI 中 您可以在托管类中使用本机类型 因为不允许在托管类中保存本机类的成员 在这种情况下您需要使用指针 这是一个例子 class NativeClass public ref class ManagedClass private
  • Discord.js v14 创建频道

    我尝试创建一个频道 但总是出现错误 我不知道如何解决它 不要注意 req 0 在 代码 中 它来自数据库 与问题没有链接 因为它在 v13 中工作 看来您的帖子主要是代码 请添加更多详细信息 我不知道我能得到什么更多的细节 哈哈 抱歉 英语
  • 在 Node.js 中的单个 HTTP 请求中调用多个 HTTP 请求

    我试图在单个 URL 调用中调用多个 URL 并将其 json 响应推送到数组中 然后将该数组发送给最终用户 我的代码如下所示 var express require express var main router express Rout
  • 我有一个 JApplet,它必须显示 3 个组件。 (2 个 JPanel 和 1 个 Paint 方法)

    我有一个作业 其中我必须允许用户使用二次方程绘制图表 我设法绘制了图形的骨架 现在我尝试显示 控制面板 以供用户输入值 我有4个文件 graph java panel java panelB java panelC java 我的问题是当我