plz tell the codes and/or logic to use the JXMapkit. I am using the swingx-ws-1.0.jar package in eclipse IDE. If a better (newer) package is available plz post the download link. Im trying to add the JXMapkit onto a JPanel with the following code but i'm unsuccessful in that also:
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jdesktop.swingx.JXMapKit;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
JXMapKit kit = new JXMapKit();
JPanel parentPanel = new JPanel();
parentPanel.setLayout(new BorderLayout());
parentPanel.add(kit, BorderLayout.CENTER);
frame.setContentPane(parentPanel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
error lies in the following line:
parentPanel.add(kit, BorderLayout.CENTER);
I found the answer in the following link:
http://www.jarvana.com/jarvana/view/org/swinglabs/swingx-ws/1.0/swingx-ws-1.0-sources.jar!/org/jdesktop/swingx/JXMapKit.java?format=ok
works perfectly.
It requires the following reference libraries:
swingx-all-1.6.3.jar
swingx-ws-1.0.jar
You Can Use this code,it will work
JFrame frame = new JFrame();
JXMapKit kit = new JXMapKit();
kit.setDefaultProvider(JXMapKit.DefaultProviders.OpenStreetMaps);
JPanel parentPanel = new JPanel();
parentPanel.setLayout(new BorderLayout());
parentPanel.add(kit, BorderLayout.CENTER);
frame.setContentPane(parentPanel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Related
I am trying to make a RPG game in a GUI and it's not going so well.
Before I added the JButton everything worked and displayed in the window as it should. I'm not sure what happened after I added the JButton.
There is supposed to be the title displayed in the grey area and the button in the blue area. Ive tried running normally and running with debugger, none of the text or button shows up.
I am following the tutorial here step-by-step and I dont see anything out of place. (I know that i've changed the variable names).
What have I done wrong here? Do I need to add anything extra?
import javax.swing.*;
import java.awt.*;
public class Game {
JFrame window;
Container c;
JPanel titlePanel;
JPanel startButtonPanel;
JLabel titleLabel;
JButton startButton;
Font titleFont = new Font("Cooper Black", Font.PLAIN, 90);
Font buttonFont = new Font("Cooper Black", Font.PLAIN, 32);
public static void main(String[] args) {
new Game();
}
public Game() {
//Main Window
window = new JFrame();
window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().setBackground(Color.BLACK);
window.setLayout(null);
window.setVisible(true);
c = window.getContentPane();
//Title Panel
titlePanel = new JPanel();
titlePanel.setBounds(100, 100, 600, 150);
titlePanel.setBackground(Color.GRAY);
titleLabel = new JLabel("TEXT RPG");
titleLabel.setForeground(Color.WHITE);
titleLabel.setFont(titleFont);
//Start Button Panel
startButtonPanel = new JPanel();
startButtonPanel.setBounds(300, 400, 200, 100 );
startButtonPanel.setBackground(Color.BLUE);
//Start Button
startButton = new JButton("START");
startButton.setBackground(Color.BLACK);
startButton.setForeground(Color.WHITE);
startButton.setFont(buttonFont);
//Add Elements to Window
titlePanel.add(titleLabel);
startButtonPanel.add(startButton);
//Add Elements to Container
c.add(titlePanel);
c.add(startButtonPanel);
}
}
Do not follow tutorial teaching you to use null layout managers and setting bounds "manually". That is not a good practice.
Remove all bounds setting from the code.
Instead use Layout Managers, that is what they do, dynamically set bounds for you:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Game {
JFrame window;
Container c;
JPanel titlePanel;
JPanel startButtonPanel;
JLabel titleLabel;
JButton startButton;
Font titleFont = new Font("Cooper Black", Font.PLAIN, 90);
Font buttonFont = new Font("Cooper Black", Font.PLAIN, 32);
public static void main(String[] args) {
new Game();
}
public Game() {
//Main Window
window = new JFrame();
window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c = window.getContentPane();
c.setBackground(Color.BLACK);
//window.setLayout(null);
//Title Panel
titlePanel = new JPanel(); //JPanel uses FlowLayout by default
//titlePanel.setBounds(100, 100, 600, 150)
titlePanel.setBackground(Color.GRAY);
titleLabel = new JLabel("TEXT RPG");
titleLabel.setForeground(Color.WHITE);
titleLabel.setFont(titleFont);
//Start Button Panel
startButtonPanel = new JPanel();
//startButtonPanel.setBounds(300, 400, 200, 100 );
startButtonPanel.setBackground(Color.BLUE);
//Start Button
startButton = new JButton("START");
startButton.setBackground(Color.BLACK);
startButton.setForeground(Color.WHITE);
startButton.setFont(buttonFont);
//Add Elements to Window
titlePanel.add(titleLabel);
startButtonPanel.add(startButton);
//Add Elements to Container
c.add(titlePanel, BorderLayout.CENTER); //JFrame content pane uses BorderLayout by default
c.add(startButtonPanel, BorderLayout.PAGE_END);
window.pack();
window.setVisible(true); //invoke after all added and pack() ed
}
}
Don't expect to get the exact desired look on first attempt. Learn how to use different Layout Managers and combinations of them to get what you want.
A friend of mine offfered to fix the problem. He added something called "extends Canvas".
Heres the fixed version:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Game extends Canvas{
private static final long serialVersionUID = 1L;
public static JFrame window;
public static Container c;
JPanel titlePanel,startButtonPanel;
JLabel titleLabel;
JButton startButton;
Font titleFont = new Font("Cooper Black", Font.PLAIN,90);
private static int width = 800;
private static int height = 600;
public static String title ="Blueberry's Game";
/*----------------------------------------------------------------------------------------------------*/
public static void main(String[] args){
Game game = new Game();
Game.window.setResizable(false);
Game.window.setTitle(Game.title);
Game.window.add(game);
Game.window.pack();
Game.window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Game.window.setLocationRelativeTo(null);
Game.window.setVisible(true);
}
/*----------------------------------------------------------------------------------------------------*/
public Game(){
window = new JFrame();
setPreferredSize(new Dimension(width, height));
window.getContentPane().setBackground(Color.BLACK);
c = window.getContentPane();
//////////TITLE PANEL//////////////////////
titlePanel = new JPanel();
titlePanel.setBounds(100, 100, 600, 150);
titlePanel.setBackground(Color.BLACK);
titleLabel = new JLabel("TEXT RPG");
titleLabel.setForeground(Color.WHITE);
titleLabel.setFont(titleFont);
//////////START BUTTON PANEL//////////////////////
startButtonPanel = new JPanel();
startButtonPanel.setBounds(300, 400, 200, 100);
startButtonPanel.setForeground(Color.BLUE);
//////////START BUTTON//////////////////////
startButton = new JButton("START");
startButton.setBackground(Color.BLACK);
startButton.setForeground(Color.WHITE);
//////////ADD ELEMENTS TO WINDOW//////////////////////
titlePanel.add(titleLabel);
startButtonPanel.add(startButton);
//////////ADD ELEMENTS TO CONTAINER//////////////////////
c.add(titlePanel);
c.add(startButtonPanel);
}
/*----------------------------------------------------------------------------------------------------*/
}
EDIT: I Also managed to see why the window wasn't showing anything in my question. I just had to adjust the window size with the cursor.
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.*
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Vector;
import com.eviware.soapui.support.types.StringToStringMap
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class Swing05 extends WindowAdapter
{
public Swing05()
{
Vector vect02 = new Vector();
vect02.addElement("ACTIVE");
vect02.addElement("VERIFY");
vect02.addElement("PENDING");
vect02.addElement("DEPLOYMENT");
vect02.addElement("PLANNING");
JComboBox cmboBox01 = new JComboBox(vect02);
cmboBox01.setAlignmentY(Component.TOP_ALIGNMENT);
// PANEL01 - VERTICAL LAYOUT BUTTONS
JTextField button02 = new JTextField("Cookie");
JTextArea button03 = new JTextArea("Locked By User");
button03.setAlignmentX(Component.CENTER_ALIGNMENT);
JPanel panel01 = new JPanel();
panel01.setLayout(new BoxLayout(panel01,BoxLayout.Y_AXIS));
panel01.add(button02);
panel01.add(Box.createVerticalStrut(5));
panel01.add(button03);
panel01.add(Box.createVerticalStrut(5));
panel01.add(cmboBox01);
//panel01.add(Box.createVerticalGlue());
//panel01.setBorder(BorderFactory.createLineBorder(Color.black));
JPanel right_panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
//right_panel.setBorder(BorderFactory.createLineBorder(Color.black));
right_panel.add(panel01);
// PANEL02 - HORIZONTAL LIST AND PANEL01
// Here, we are going to create a list of elements and place them into a BorderLayout panel
// in the centre to ensure that the list will expand in size relative to the window size.
Vector vect01 = new Vector();
vect01.addElement("COUNTRY_STG");
vect01.addElement("LOB_STG");
vect01.addElement("MRT_LABOR_BASE_RATES_STG");
vect01.addElement("MRT_LABOR_ADDERS_STG");
vect01.addElement("INFLATION_STG");
vect01.addElement("MRT_PRICE_CONFIG");
vect01.addElement("MRT_WW_CONFIG");
vect01.addElement("PAYMENT_TERMS");
vect01.addElement("PAYMENT_TERMS_MAPPING");
vect01.addElement("COUNTRY_CURR_CONFIG");
vect01.addElement("SDM_OFFERING_HIERARCHY");
vect01.addElement("SDM_FWB_MAPPING");
JList list01 = new JList(vect01);
JScrollPane scrPane = new JScrollPane(list01);
JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout());
// p1.setBorder(BorderFactory.createEtchedBorder());
p1.add(scrPane,BorderLayout.CENTER);
JPanel panel02 = new JPanel();
panel02.setLayout(new BoxLayout(panel02,BoxLayout.X_AXIS));
panel02.add(Box.createHorizontalStrut(5));
panel02.add(p1);
panel02.add(Box.createHorizontalStrut(5));
//panel02.add(panel01);
panel02.add(right_panel);
panel02.add(Box.createHorizontalStrut(5));
// PANEL03 - HORIZONTAL LAYOUT FOR BUTTONS
JButton button05 = new JButton("Close");
JButton button06 = new JButton("Apply");
JPanel panel03 = new JPanel();
panel03.setLayout(new BoxLayout(panel03,BoxLayout.X_AXIS));
panel03.add(Box.createHorizontalGlue());
panel03.add(Box.createHorizontalStrut(5));
panel03.add(button05);
panel03.add(Box.createHorizontalStrut(5));
panel03.add(button06);
panel03.add(Box.createHorizontalStrut(5));
// PANEL04 - HOLDS PANEL02 and PANEL03
JPanel panel04 = new JPanel();
panel04.setLayout(new BoxLayout(panel04,BoxLayout.Y_AXIS));
panel04.add(Box.createVerticalStrut(5));
panel04.add(panel02);
panel04.add(Box.createVerticalStrut(0));
panel04.add(panel03);
panel04.add(Box.createVerticalStrut(5));
// Put EVERYTHING into a scrollable pane so if the frame isn't large enough to
// display everything, it can be reached by scrolling the pane.
JScrollPane mainPane = new JScrollPane(panel04);
// CREATE THE WINDOW AND DISPLAY THE FRAME
JFrame frame01 = new JFrame();
frame01.setContentPane(mainPane);
frame01.setTitle("Insert Variables");
frame01.setSize(500,200);
frame01.setLocation(200,200);
frame01.addWindowListener(this);
frame01.pack();
frame01.setVisible(true);
frame01.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
button05.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
frame01.dispose();
}
});
}
public static void main(String [] args)
{
Swing05 app01 = new Swing05();
}
}
Im trying to build an interface to select some variables for SoapUI .
im failing miserably .
can someone point me in the right direction ?
i wasnt able connecting the selected items to variables that can be used further.
I believe you would like to add GUI support to SoapUI through Groovy scripts. In this case I would suggest to opt for plugin development for SoapUI with GUI features.
Here is the sample which you can adapt - https://github.com/olensmar/soapui-emailtestsstep-plugin/blob/master/src/main/java/soapui/demo/teststeps/email/EMailTestStepDesktopPanel.java
I'm on Mac OSX 10.7 64 Bit.
I want a JSlider using MetalUI.
package test;
import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.plaf.metal.MetalLookAndFeel;
public class Test {
public static void main(String args[]) throws UnsupportedLookAndFeelException {
JFrame frame = new JFrame("Tick Slider");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JSlider slider = new JSlider(-100, 100, 0);
LookAndFeel save = UIManager.getLookAndFeel();
LookAndFeel laf = new MetalLookAndFeel();
UIManager.setLookAndFeel(laf);
slider.setUI(new javax.swing.plaf.metal.MetalSliderUI());
frame.add(slider, BorderLayout.NORTH);
frame.setSize(300, 200);
frame.setVisible(true);
UIManager.setLookAndFeel(save);
}
}
This example program shows me the JSlider but the triangle is translucent and I can see the rendered value bar. How can I fix that?
i'v put a jpanel on the tab of Jtabbedpane which is at the left side ,nw when the tab is clicked i want to display labels and textfields in the workspace of the tabbedpane,plz hlp.
When you say 'workspace of the tabbedpane' I think you are referring to your JPanel?
You must attach the JLabels and JTextfields to the JPanel using JPanel.add() before you add the JPanel to the JTabbedPane.
I think you should do exactly as #7SpecialGems says (+1 for that).
Here is an example showing how exactly it can look like in code.
import java.awt.Color;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class JTabbedPaneSample
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
#Override
public void run()
{
createGUI();
}
});
}
private static void createGUI() throws HeadlessException
{
JPanel oi1 = new JPanel();
oi1.setBackground(Color.RED);
oi1.add(new JLabel("Label 1"));
JPanel oi2 = new JPanel();
oi2.setBackground(Color.PINK);
oi2.add(new JLabel("Label 2"));
oi2.add(new JTextField("TextField 1"));
JTabbedPane tp = new JTabbedPane();
tp.addTab("Oi1", oi1);
tp.addTab("Oi2", oi2);
JPanel contentPane = new JPanel();
contentPane.add(tp);
JFrame f = new JFrame();
f.setContentPane(contentPane);
f.setSize(800, 600);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
Good luck, Boro.
I'm doing something wrong here: I want to have two JButtons in a JSplitPane in a JPanel in a a JFrame, where the buttons fill the JSplitPane.
Here's what I get when I resize the JFrame:
The buttons stay their normal size, and the JSplitPane doesn't allow adjusting.something
How do I fix this?
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import net.miginfocom.swing.MigLayout;
public class SplitPaneQuestion {
public static void main(String[] args) {
JFrame frame = new JFrame("SplitPaneQuestion");
JPanel panel = new JPanel();
frame.setContentPane(panel);
panel.setLayout(new MigLayout("","[]","[grow]"));
JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
panel.add(splitpane, "");
splitpane.setTopComponent(new JButton("top"));
splitpane.setBottomComponent(new JButton("bottom"));
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Add the "push" and "grow" contraints to your split pane, like this:
panel.add(splitpane, "push, grow");