The JTextField
is there because when I move the mouse over where it's supposed to be the mouse icon changes to a cursor, then when I click it shows up. But it's invisible at launch. What am I missing?
public class JavaSwingTextfield extends JFrame {
private static final long serialVersionUID = 1L;
JTextField myTextField;
public JavaSwingTextfield(){
/***** JFrame setup *****/
// Set the size of the window
setSize(600,600);
// Make the application close when the X is clicked on the window
setDefaultCloseOperation(EXIT_ON_CLOSE);
// Makes the JFrame visible to the user
setVisible(true);
/***** JFrame setup END *****/
/***** JButton setup *****/
// Create a JLabel and set its label to "Start"
myTextField = new JTextField("Start");
// Set the label's size
myTextField.setSize(100, 50);
// Put the label in a certain spot
myTextField.setLocation(200, 50);
// Set a font type for the label
//Font myFont = new Font("Serif", Font.BOLD, 24);
//myTextField.setFont(myFont);
// Add the label to the JFrame
add(myTextField);
/***** JButton setup END *****/
}
/***** The main method *****/
public static void main(String[] args){
new JavaSwingTextfield();
}
}
Event Dispatch Thread
for creating GUI componentssetVisible(..)
before all components have been added to the JFrame
( this is the above code snippets actual error +1 to @Clark)JFrame
classsetSize(..)
, rather simply call JFrame#pack()
before setting the JFrame
visiblesetSize()
on JTextField
rather look at its constructor: JTextField(String text,int columns)
LayoutManager
s, see here for some examples: A Visual Guide to Layout ManagersHere is an example I made (basically your code with fixes):
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class JavaSwingTextfield {
private JTextField myTextField;
public JavaSwingTextfield() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myTextField = new JTextField("Start");
// Add the label to the JFrame
frame.add(myTextField);
//pack frame to component preferred sizes
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
//Create UI on EDT
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JavaSwingTextfield();
}
});
}
}