Я пытаюсь нарисовать простой графический интерфейс (созданный с помощью windowbuilder в eclipse), я хочу иметь две кнопки и прокручиваемую область текста между ними. Я создал следующий код для достижения выше:java.awt.Container.checkNotAWindow error in simple gui
public class Main extends JFrame implements ActionListener{
public Font font; //used for the font file
public JTextArea txtDataWillBe;
public Main() throws FontFormatException, IOException{
setTitle("Main title ");
setBounds(100, 100, 1200, 600);
getContentPane().setLayout(null);
txtDataWillBe = new JTextArea();
txtDataWillBe.setText("Your data will display here");
txtDataWillBe.setFont(new Font("Droid Sans", Font.BOLD, 18));
txtDataWillBe.setEditable(false);
txtDataWillBe.setColumns(1);
txtDataWillBe.setBounds(0, 40, 919, 484);
getContentPane().add(txtDataWillBe);
JButton button = new JButton("CLICK TO OPEN");
button.setBounds(0, 0, 940, 40);
button.setFont(new Font("Coalition", Font.PLAIN, 18));
getContentPane().add(button);
JButton btnPrint = new JButton("PRINT");
btnPrint.setBounds(0, 531, 940, 40);
btnPrint.setFont(new Font("Coalition", Font.PLAIN, 18));
getContentPane().add(btnPrint);
}
private final String JTextFile = null;
JFileChooser chooser;
String choosertitle;
public static File deletefile;
EDIT:
public static void main(String s[]) {
JFrame frame = new JFrame("Reader");
Main panel = null;
try {
panel = new Main();
} catch (FontFormatException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
frame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
File deleteme = new File (deletefile + "mx.txt");
deleteme.delete();
System.exit(0);
}
}
);
frame.getContentPane().add(panel,"Center");
frame.setSize(panel.getPreferredSize());
frame.setVisible(true);
}
я первоначально имел JTextArea внутри JScrollPane (мышления, что является наилучшим способом, чтобы получить прокрутки Я хочу работать). Я удалил мышление JScrollPane, которое вызывало ошибку консоли, но я все еще получаю ошибку.
выход Консоль:
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Container.java:439)
at java.awt.Container.addImpl(Container.java:1035)
at java.awt.Container.add(Container.java:923)
EDIT: Основное добавлен выше.
Что я делаю неправильно с моим графическим интерфейсом?
Нужен ли JScrollPane и JTextArea для вертикальной прокрутки загруженного текста?
Благодарим за помощь;
Энди
EDIT:
я редактировал в соответствии с предложениями ниже мой код теперь гласит:
public Main() throws FontFormatException, IOException{
JFrame frame = new JFrame("Reader ");
frame.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
File deleteme = new File (deletefile + "mx.txt");
deleteme.delete();
System.exit(0);
}
}
);
frame.getContentPane().add(panel,"Center");
frame.setSize(getPreferredSize());
frame.setVisible(true);
Остальная часть кода, как и раньше, но все я получаю отображается это пустой серый кадр без каких-либо из моих компонентов (хотя все они отображаются в windowbuilder).
Спасибо за дальнейшую помощь.
Главное не показано в вашем примере, но я подозреваю, что вы добавляете свой кадр в другой фрейм или диалог. –
Несвязанные: не выполняйте ручную калибровку/расположение компонентов, когда-либо. Вместо этого используйте подходящий LayoutManager. – kleopatra
Спасибо. Я предполагаю, что проблема с моим способом определения вещей заключается в том, что если пользователь максимизирует, то ничего не будет правильно рисовать? Я не справился с относительными макетами, поэтому пошел в абсолюты. – andy