У меня есть задание, в котором я должен разрешить пользователю построить график с использованием квадратного уравнения.
Мне удалось нарисовать скелет графика, и теперь я пытаюсь отобразить панель управления, чтобы пользователь мог вводить значения.
У меня есть 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));}
}
nllkl.java
@Override
public Dimension getPreferredSize(){return (new Dimension(201,50));}
}
Все еще нет улучшения. Я не могу понять, что происходит.
panel
вместо каждого изpanel
,panelB
иpanelC
. - person Andrew Thompson   schedule 16.06.2012JFrame
вместо этого. Если да, спросите репетитора «почему апплет?». Их сложнее разрабатывать, отлаживать и развертывать, и это не то, что должны пробовать студенты, или в любой ситуации, когда вы не хотите втискивать совершенно хороший многофункциональный клиент на веб-страницу (что в лучшем случае является странной смесью). раз). - person Andrew Thompson   schedule 16.06.2012Box
? - person Andrew Thompson   schedule 16.06.2012Box
, как это было сделано в конструкторе панелей компонентов. Кстати, второй комментарий..BoxLayout.X_AXIS);//vertical
должен читаться как//horizontal
- комментарии не годятся, если они неверны! - person Andrew Thompson   schedule 16.06.2012ControlsA
&ControlsB
(хотя компоненты внутри них необходимы). Я считаю, что это плохой дизайн - использование наследования там, где оно должно быть композицией. Способ исправления апплета меняется в зависимости от этого решения. Являются ли они частью спецификации? домашнего задания? - person Andrew Thompson   schedule 16.06.2012