2014-01-09 5 views
1

Итак, я просто нашел форму JBrame Netbeans, указанную в онлайн-учебном пособии, чтобы помочь с макетом (в моем учебнике не упоминалось об этом в разделе GUI, по крайней мере, что я видел!) Поскольку у меня сложная время с макетом программы, над которой я работаю (я не могу заставить текстовую область себя вести и оставаться в центре окна, а не занимать все окно!) Я думал, что визуальная помощь может быть полезна, однако, как вы, возможно, догадались, у меня уже есть большой объем кода, погруженный в эту программу. Можно ли связать новую форму JFrame с существующим классом? Если да, то как мне это сделать? Я могу предоставить свой код, если вам это нужно, но мы говорим о 500 строках кода только в одном из трех основных классов.Можно ли добавить форму jframe в существующий класс?

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package theproblem; 

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.TextArea; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

/** 
* 
* @author Heather 
*/ 
public class TheProblem { 

/** 
* @param args the command line arguments 
*/ 

public static void main(String[] args) { 

    JFrame window2 = new JFrame(); 
    TextArea battleLogging = new TextArea(3,10); 
    JScrollPane logScrollPane = new JScrollPane(battleLogging); 
    JLabel BattleLog = new JLabel(); 
    JLabel p1HPLabel= new JLabel(); 
    JLabel p2HPLabel= new JLabel(); 
    String attack1ButtonContents = "Just an attack"; 
    String attack2ButtonContents = "Just another attack"; 
    JButton attack1=new JButton(attack1ButtonContents); 
    JButton attack2=new JButton(attack2ButtonContents); 


    window2.setLayout(new BorderLayout()); 
    window2.setSize(400,400); 
    JPanel attackPanel = new JPanel(); 
    attackPanel.add(attack1); 
    attackPanel.add(attack2); 
//  attack1 = new JButton(p1A1); 
//  attack2 = new JButton(p1A2); 
//  attack1.addActionListener(new Attack1()); 
//  attack2.addActionListener(new Attack2()); 
    //window2.add(attackPanel, BorderLayout.CENTER); 
    window2.add(battleLogging, BorderLayout.CENTER); 
    battleLogging.setEditable(false); 
    logScrollPane.setVerticalScrollBarPolicy(
      JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
    logScrollPane.setPreferredSize(new Dimension(50, 50)); 
    //battleLogging.setLineWrap(true); 
    //battleLogging.setWrapStyleWord(true); 
    window2.add(BattleLog, BorderLayout.NORTH); 
    window2.add(p1HPLabel, BorderLayout.WEST); 
    window2.add(p2HPLabel, BorderLayout.EAST); 
    window2.setVisible(true); 
    window2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 


} 
+0

Пытаясь использовать создатель gui с существующим кодом, будет больше проблем, чем это стоит, ИМХО. Почему бы вам просто не написать код самостоятельно? –

+0

Сделайте [SSCCE] (http://sscce.org), демонстрируя свою проблему. – nachokk

+0

Я сделал, а затем попытался добавить JTextArea, чтобы содержать журнал видимых событий, видимых в окне, и он не остается в центре BorderLayout, который я указал. Он занимает все окно, где не видно ни одной кнопки, ни JLabel наверху –

ответ

2

Чтобы ответить на ваш вопрос прямо, вы можете создать JFrame (на самом деле пользовательский класс простирающуюся JFrame) и разработать его в Netbeans визуальный конструктор, а затем создать его экземпляр в существующем классе. Вы можете использовать композицию (http://en.wikipedia.org/wiki/Object_composition) и иметь ссылку на JFrame в качестве поля в существующем классе. Вы можете предоставить дополнительные методы в своем JFrame для передачи данных на него.

Смежные вопросы