У меня есть два класса, которые расширяют JFrame. во-первых, я беру данные из одного Jframe и отображая график на другом JFrame, но во втором JFrame он также показывает содержимое первой Jframe. Вот кодПолучение данных другого JFrame при отображении JFrame
class upgma extends JFrame
{
static int width;
static int height;
JPanel c;
int titem;
volatile boolean called;
static String finalans;
upgma()
{
c = new JPanel();
called = false;
JTextField items;
JButton init;
c.setLayout(null);
items=new JTextField();
JLabel ni = new JLabel("Number of items");
ni.setBounds(width/2-95,height/2-50,100,20);
items.setBounds(width/2-100,height/2-20,100,20);
init = new JButton("Next");
init.setBounds(width/2+15,height/2-20,80,20);
init.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if(items.getText().isEmpty() || !items.getText().matches("[1-9]?[0-9]*"))
{
JLabel e=new JLabel("Please Enter VALID Data !! ");
e.setBounds(width/2-85,height/2+20,200,20);
c.add(e);
validate();
repaint();
}
else
enterData(items);
}
});
c.add(ni);
c.add(items);
c.add(init);
JScrollPane jScrollPane = new JScrollPane(c);
jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(jScrollPane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
public static void main(String[] args)
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
width = (int)screenSize.getWidth();
height = (int)screenSize.getHeight()-40;
System.out.println(width+""+height);
upgma u = new upgma();
u.setSize(width,height);
u.setVisible(true);
u.setTitle("Unweighted Pair Group Method with Arithmetic Mean");
while(!u.called);
u.setVisible(false);
u = null;
drawing d= new drawing(finalans);
d.getRootPane().setOpaque(false);
((JComponent) d.getContentPane()).setOpaque(false);
d.setSize(width,height);
d.setVisible(true);
d.setTitle("Unweighted Pair Group Method with Arithmetic Mean demo");
}
}
и другой класс выглядит следующим образом:
class drawing extends JFrame
{
Container c1;
static int width;
static int height;
String data;
drawing(String temp)
{
data = temp;
c1=getContentPane();
c1.setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
width = (int)screenSize.getWidth();
height = (int)screenSize.getHeight()-40;
}
public void paint(Graphics g)
{
super.paint(g);
Font font = g.getFont().deriveFont(20.0f);
g.setFont(font);
if(data.isEmpty())
{
JLabel er = new JLabel("Nothing to Show !!");
er.setBounds(width/2-100,height/2,150,40);
c1.add(er);
}
else
{
int length = data.length();
draw(g,data,width/2-length*7,40);
}
}
}
и он показывает мне, как это: Дерево печататься здесь .Я распечатав в разрисованным class.That TextFields это показывается первая степень обновления, которая расширяет JFrame.
Я не получаю, где я делаю неправильно .. Пожалуйста, помогите ..
Но это другой JFrame и два класса r разные. Тем не менее это может создать эту проблему? И я хотел нарисовать JFrame, и я нашел этот код, чтобы рисовать рамку. –
В принципе, установка этого метода является эквивалентом Java: «Я хочу нарисовать это на стекле, а не на куске дерева». Когда вы нажмете на стеклянную панель, вы все равно сможете увидеть, что стоит за ней. –
Итак, если я удалю эту строку, смогу ли я рисовать рамку с использованием того же кода или мне нужно что-либо изменить? @Joe C –