Я изучаю дизайн графического интерфейса Swing. Я еще не совсем разобрался с тем, как добавить Canvas в определенное место в контейнере.
Более конкретно: я создаю Canvas code> класс, использующий метод Paint. Объект этого класса добавляется в JPanel.
Что я не совсем понимаю, так это как и где он добавляется в JPanel. В Tkinter Canvas — это виджет, который содержит только изображение, но в Swing нет подобного виджета (вероятно, не самое лучшее слово), добавленного в JFrame, который содержит только объект Canvas и ничего else.
Я добавляю автономный код. Пожалуйста, игнорируйте текстовые поля и метки.
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
//frame class
class frame_class2 extends JFrame implements ActionListener{
//declare buttons
JButton draw_button = new JButton("Draw");
JButton quit_button= new JButton("Quit");
JButton info_button = new JButton("Info");
//declare labels
JLabel x_loc = new JLabel("X:");
JLabel y_loc = new JLabel("Y:");
JLabel w_label= new JLabel("Width:");
JLabel h_label = new JLabel("Height:");
//Layout
FlowLayout layout_frame1 = new FlowLayout();
//Text boxes
JTextField x_loc_box = new JTextField("0");
JTextField y_loc_box = new JTextField("0");
JTextField w_loc_box = new JTextField("100");
JTextField h_loc_box = new JTextField("100");
//Info
JOptionPane info1 = new JOptionPane();
//Canvas
//Canvas area1 = new Canvas();
//Containers
JPanel panel1 = new JPanel();
JPanel panel2= new JPanel();
//Container container3 = new Container();
Container con = getContentPane();
public frame_class2(){
//panel1 = getContentPane();
//add(area1);
//add labels to the first panel
panel1.setLayout(layout_frame1);
panel2.setLayout(layout_frame1);
panel1.add(x_loc);
panel1.add(x_loc_box);
panel1.add(y_loc);
panel1.add(y_loc_box);
panel1.add(w_label);
panel1.add(w_loc_box);
panel1.add(h_label);
panel1.add(h_loc_box);
//add buttons to the second panel
draw_button.addActionListener(this);
quit_button.addActionListener(this);
info_button.addActionListener(this);
panel2.add(draw_button);
panel2.add(quit_button);
panel2.add(info_button);
con.add(panel1, BorderLayout.NORTH);
//con.add(new JSeparator(), BorderLayout.CENTER);
con.add(panel2, BorderLayout.SOUTH);
setDefaultCloseOperation(super.EXIT_ON_CLOSE);
setTitle("Graphics Toolbox v2");
//Set up the content pane.
//this.getContentPane();
pack();
//setSize(500, 500);
setLocationRelativeTo(null);
//setBackground(Color.BLUE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource()==info_button){
info1.showMessageDialog(this, "hahahahahaha");
}
else if (e.getSource()==quit_button){
System.exit(0);
}
else if (e.getSource()==draw_button){
graphics_class2 input1 = new graphics_class2();
con.add(input1);
//info1.showMessageDialog(this, "Not yet!");
}
}
}
//graphics class
class graphics_class2 extends Canvas{
public graphics_class2(){
//frame_class1 inst1 = new frame_class1();
//Canvas img1 = inst1.area1;
setSize(50,50);
//setBackground(Color.BLUE);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.GREEN);
g.fillArc(0, 0, 50, 50, 50, 50);
}
}
public class main_code {
public static void main(String args[]){
frame_class2 inst1 = new frame_class2();
}
}
Подробнее здесь: https://stackoverflow.com/questions/121 ... s-in-swing
Указание местоположения Canvas в Swing ⇐ JAVA
Программисты JAVA общаются здесь
1730404417
Anonymous
Я изучаю дизайн графического интерфейса Swing. Я еще не совсем разобрался с тем, как добавить Canvas в определенное место в контейнере.
Более конкретно: я создаю Canvas code> класс, использующий метод Paint. Объект этого класса добавляется в JPanel.
Что я не совсем понимаю, так это как и где он добавляется в JPanel. В Tkinter Canvas — это виджет, который содержит только изображение, но в Swing нет подобного виджета (вероятно, не самое лучшее слово), добавленного в JFrame, который содержит только объект Canvas и ничего else.
Я добавляю автономный код. Пожалуйста, игнорируйте текстовые поля и метки.
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
//frame class
class frame_class2 extends JFrame implements ActionListener{
//declare buttons
JButton draw_button = new JButton("Draw");
JButton quit_button= new JButton("Quit");
JButton info_button = new JButton("Info");
//declare labels
JLabel x_loc = new JLabel("X:");
JLabel y_loc = new JLabel("Y:");
JLabel w_label= new JLabel("Width:");
JLabel h_label = new JLabel("Height:");
//Layout
FlowLayout layout_frame1 = new FlowLayout();
//Text boxes
JTextField x_loc_box = new JTextField("0");
JTextField y_loc_box = new JTextField("0");
JTextField w_loc_box = new JTextField("100");
JTextField h_loc_box = new JTextField("100");
//Info
JOptionPane info1 = new JOptionPane();
//Canvas
//Canvas area1 = new Canvas();
//Containers
JPanel panel1 = new JPanel();
JPanel panel2= new JPanel();
//Container container3 = new Container();
Container con = getContentPane();
public frame_class2(){
//panel1 = getContentPane();
//add(area1);
//add labels to the first panel
panel1.setLayout(layout_frame1);
panel2.setLayout(layout_frame1);
panel1.add(x_loc);
panel1.add(x_loc_box);
panel1.add(y_loc);
panel1.add(y_loc_box);
panel1.add(w_label);
panel1.add(w_loc_box);
panel1.add(h_label);
panel1.add(h_loc_box);
//add buttons to the second panel
draw_button.addActionListener(this);
quit_button.addActionListener(this);
info_button.addActionListener(this);
panel2.add(draw_button);
panel2.add(quit_button);
panel2.add(info_button);
con.add(panel1, BorderLayout.NORTH);
//con.add(new JSeparator(), BorderLayout.CENTER);
con.add(panel2, BorderLayout.SOUTH);
setDefaultCloseOperation(super.EXIT_ON_CLOSE);
setTitle("Graphics Toolbox v2");
//Set up the content pane.
//this.getContentPane();
pack();
//setSize(500, 500);
setLocationRelativeTo(null);
//setBackground(Color.BLUE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource()==info_button){
info1.showMessageDialog(this, "hahahahahaha");
}
else if (e.getSource()==quit_button){
System.exit(0);
}
else if (e.getSource()==draw_button){
graphics_class2 input1 = new graphics_class2();
con.add(input1);
//info1.showMessageDialog(this, "Not yet!");
}
}
}
//graphics class
class graphics_class2 extends Canvas{
public graphics_class2(){
//frame_class1 inst1 = new frame_class1();
//Canvas img1 = inst1.area1;
setSize(50,50);
//setBackground(Color.BLUE);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.GREEN);
g.fillArc(0, 0, 50, 50, 50, 50);
}
}
public class main_code {
public static void main(String args[]){
frame_class2 inst1 = new frame_class2();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/12107163/specifying-the-location-of-canvas-in-swing[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия