2017-01-22 6 views
0

Я пытаюсь создать модельный браузер, но эта ошибка возникает из кажущейся тонкой строки кода.Не найдено подходящего метода для добавления (TextField)?

import java.awt.Container; 
import java.awt.Font; 
import java.awt.Insets; 
import javafx.scene.control.TextField; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/** 
* 
* @author PC 
*/ 
public class Browser extends JFrame{ 
    private TextField field = new TextField(); 
    private JEditorPane display = new JEditorPane(); 
    private JScrollPane scroller = new JScrollPane(display); 

    public static void main(String args[]){ 
    Browser file = new Browser(); 
    file.framelander(); 
    } 

    public void framelander() { 
     setTitle("Browser"); 
     setSize(1200, 800); 
     setResizable(false); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLayout(null); 
     setLocationRelativeTo(null); 
     addComponentsToFrame(getContentPane()); 
    } 

    public void addComponentsToFrame(Container pane) { 
     Insets insets = getInsets(); 

     pane.add(field); 
     pane.add(scroller); 

     Font font = new Font("Menlo", Font.PLAIN, 11); 
    field.setFont(font); 
    } 



} 

Ошибка, которую я получаю, находится на pane.add (поле) с ошибкой;

no suitable method found for add(TextField) 
    method Component.add(PopupMenu) is not applicable 
     (argument mismatch; TextField cannot be converted to PopupMenu) 
    method Container.add(Component) is not applicable 
     (argument mismatch; TextField cannot be converted to Component) 
---- 
(Alt-Enter shows hints) 

Я также получаю «несовместимые типы: java.awt.font не могут быть преобразованы в javafx.scene.text.Font» в смелой части field.setFont (шрифта);, но я предполагаю, что это связано с первоначальной ошибкой. Однако я отправлю его здесь на всякий случай.

Любая помощь приветствуется. Заранее спасибо.

+0

Ваш совет должен быть «Невозможно преобразовать» вместе с именем пакета ... «javafx» и «awt» классы не являются полностью совместимый –

ответ

3

Вы тут же ошибаетесь TextField.

import javafx.scene.control.TextField; 

Вы, вероятно, хотите импортировать один:

import javax.swing.JTextField; 

А затем изменить field к JTextField

private JTextField field = new JTextField(); 

Это должно исправить все ошибки, которые Вы описали. Кроме того, ваш JFrame должен иметь макет, и я советую вам изучить это руководство. A Visual Guide to Layout Managers

+0

'' Вы, вероятно, захотите импортировать это: java.awt.TextField "' - Nope. Не рекомендуется смешивать компоненты AWT и Swing, если это не необходимо. –

+0

За исключением использования JTextField от Swing, я не понимаю, почему бы ему не использовать его, исходя из контекста и того, как он пытается его использовать. Я только что увидел имя класса, который использовал, и пошел с ним, но я понимаю. –

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