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 Managers
Here 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();
}
});
}
}
You're adding the JTextfield
to the JFrame
AFTER you've made the JFrame
visible. Just add the JTextField
before hand.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With