|
|
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Меня интересует почему при вводе в диалоговое окно (текстовые поля) координат ля рисования точки у меня выскакивает такое исключение. ВВОжу стандатрные координаты 3,3,9,9 (нач. И конечная точка с х и y). Также ввожу толщиную линии (stroke) например 3 или 5. Не умаю что дело в формате ибо ввод например 3.0f или 3D вместо 3 ничего не изменяет. Тем более если оставить пустым оно из этих 5 полей то нажатия на кнопку Draw вызывает NumberFormatException, а оставляюпустым ля цвета то никакой ошибки не появляется. В чем зесь дело? Каким образом вводить координаты --код правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 13:20 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Вот код в котором возникает исключение. try { line = new Line(mainView.getFirstPointXCoordinate(), mainView.getFirstPointYCoordinate(), mainView.getSecondPointXCoordinate(), mainView.getSecondPointYCoordinate()); try { Graphics g = null; mainView.setVisible(false); lineView.setVisible(true); lineView.paintComponent(g, line, mainView.getLineColor(), (float) mainView.getLineThickness()); } catch (NullPointerException ex) { System.out.println(ex); } } catch (NumberFormatException e) { System.out.println(e); } -- может дело в инициализации класа Graphics нулю. Как тогда это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 14:04 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Вот код в котором возникает исключение. try { line = new Line(mainView.getFirstPointXCoordinate(), mainView.getFirstPointYCoordinate(), mainView.getSecondPointXCoordinate(), mainView.getSecondPointYCoordinate()); try { Graphics g = null; mainView.setVisible(false); lineView.setVisible(true); lineView.paintComponent(g, line, mainView.getLineColor(), (float) mainView.getLineThickness()); } catch (NullPointerException ex) { System.out.println(ex); } } catch (NumberFormatException e) { System.out.println(e); } -- может дело в инициализации класа Graphics нулю. Как тогда это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 14:05 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
https://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html Перечисленные в статье методы нужно не вызывать, а переопределять. Вызывает их платформа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 14:22 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Вы думаете. Что дело в переопределение метода, а не присоение 0 Graphics. Не знаю как иначе инициализировать Graphics. Вот переопределение: public void paintComponent(Graphics g, Object object, String color, float thickness) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setStroke(new BasicStroke(thickness)); g2.setColor(Color.getColor(color)); g2.draw((Shape) object); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:24 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
stutВы думаете. Что дело в переопределение метода, а не присоение 0 Graphics. Я не думаю. Я знаю. stut Не знаю как иначе инициализировать Graphics. Вот переопределение: Вместо того чтобы постить несвязные текст, запустили бы любой из сотен примеров, которых легко найти гуглом Например: http://zetcode.com/gfx/java2d/basicdrawing/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 15:47 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Вот аналогичный но более нужный мне код для прямоугольника: В принципе должен отвечать системе MVC --работает, кроме того, что при заполнение формы, кнопка Draw неактивна- потому не передает введеные знгачение в клас rectangleview для рисование заполненого прямоугольника. Подскажите, в чем ошибка--код в 5 разных файлах. 1) package recct; import java.awt.Color; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; import javax.swing.JComponent; import javax.swing.JFrame; import java.lang.Object; import java.awt.geom.RectangularShape; import java.awt.geom.Rectangle2D.Double; public class Pkutnyk extends Rectangle2D.Double { private double x1; private double y1; private double w; private double h; private String color; public Pkutnyk(double x1, double y1, double w, double h) { this.x1=x1; this.y1=y1; this.w=w; this.h=h; } public double getWidth(){ return w;} public double getHeight(){ return h;} public double getX1(){return x1;} public double getY1(){return y1;} public String getColor() { return color; } public void setColor(String color) { this.color = color; } } 2) package recct; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; 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.JTextField; public class MainView extends JFrame { private JLabel firstPointX = new JLabel( "Enter X coordinate of first point"); private JTextField firstPointXt = new JTextField(10); private JLabel firstPointY = new JLabel( "Enter Y coordinate of first point"); private JTextField firstPointYt = new JTextField(10); private JLabel secondPointX = new JLabel( "Enter X coordinate of second point"); private JTextField secondPointXt = new JTextField(10); private JLabel secondPointY = new JLabel( "Enter Y coordinate of second point"); private JTextField secondPointYt = new JTextField(10); private JLabel rectangleColor = new JLabel("Enter Color"); private JTextField rectangleColort = new JTextField(10); private JButton button = new JButton("Draw"); public MainView() { JPanel panel = new JPanel(); this.setTitle("Main"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); this.setSize(200, 500); this.setLocationRelativeTo(null); this.setLayout(new GridBagLayout()); this.setVisible(true); panel.add(firstPointX); panel.add(firstPointXt); panel.add(firstPointY); panel.add(firstPointYt); panel.add(secondPointX); panel.add(secondPointXt); panel.add(secondPointY); panel.add(secondPointYt); panel.add(rectangleColor); panel.add(rectangleColort); panel.add(button); this.add(panel, new GridBagConstraints(0, 0, 1, 1, 1, 1, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets( 2, 2, 2, 2), 0, 0)); } public double getFirstPointX() { return Double.parseDouble(firstPointXt.getText()); } public double getFirstPointY() { return Double.parseDouble(firstPointYt.getText()); } public double getWidtht() { return Double.parseDouble(secondPointXt.getText())-getFirstPointX(); } public double getHeightt() { return Double.parseDouble(secondPointYt.getText())-getFirstPointY(); } public String getrectangleColor() { return rectangleColort.getText(); } public void addButtonListener(ActionListener listenForButton) { button.addActionListener(listenForButton); } void displayErrorMessage(String errorMessage){ JOptionPane.showMessageDialog(this, errorMessage); } } 3) package recct; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.geom.Rectangle2D; public class RectangleView extends JPanel { double x; double y; double w; double h; public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; Pkutnyk rect = new Pkutnyk(x, y, w, h); g2.setPaint(Color.RED); g2.fill(rect); } public void main() { RectangleView rects = new RectangleView(); JFrame frame = new JFrame("Pryamokutnyk"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); frame.add(rects); frame.setSize(360, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); } } 4) package recct; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Controller { private Pkutnyk pkut; private MainView mainView; private RectangleView rview; public Controller(Pkutnyk pkut, MainView mainView) { this.pkut = pkut; this.mainView = mainView; this.mainView.addButtonListener(new ButtonListener()); } class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent arg0) { try { rview.x = mainView.getFirstPointX(); rview.y = mainView.getFirstPointY(); rview.w = mainView.getWidtht(); rview.h = mainView.getHeightt(); rview.main(); mainView.setVisible(false); rview.setVisible(true); } catch (NumberFormatException ex) { System.out.println(ex); } } } } 5) package recct; public class Appl { public static void main(String[] args) { MainView mainView = new MainView(); RectangleView rectView=new RectangleView(); mainView.setVisible(true); rectView.setVisible(false); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 05:38 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Мля, ну когда вы уже откроете для себя тэг src на форме ввода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 10:08 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну уже звиняйте за прямокутник (не прямоугольник) --надо так мне представить. Надо как-то связать этот листенер с кликом--а то не активная кнопка при нажатие--и даные из полей ввода не передаются в клас ВидаПрямоугольника для инициализации постоения и заполнения этой фигуры. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 11:53 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
Ну так в чем проблема-- в "addActionListener", "ButtonListener","Action perfomed"? Почему собития не работает. Почему при нажатия на кнопку она остается "глухой"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 23:52 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
stut, Как у вас тут все сложно... Что делает класс RectangleView? Как вы инициализируете его данные: x,y,w,h? ActionListener у вас определен в классе Controller внутренним классом и никак с кнопкой класса MainView не связан... Ну и гуи рекомендуется запускать в отдельном потоке https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 11:05 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
package recct; public class Appl { public static void main(String[] args) { MainView mainView = new MainView(); RectangleView rectView=new RectangleView(); Controller contr=new Controller(mainView,rview);//Если это поле добавить то кнопка работает, появляется пустой фрейм без -///прямоугольника--ибо если передать Rectangle.x вместо названия фрейма то появится 0.0--то есть действительно rview.x = mainView.getFirstPointX();--не работают как и еще три поля. То есть батонлисенер не может выбрать этих даных. Даже если заменить на rview1.x = Double.parseDouble(mainView.firstPointXt.getText() ); mainView.setVisible(true); rectView.setVisible(false); Даже помещал public void main() { RectangleView rects = new RectangleView(); JFrame frame = new JFrame("Pryamokutnyk"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E); frame.add(rects); frame.setSize(360, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); } в клас Jframe implements Runnable--но ничего не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 17:13 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
"Что делает класс RectangleView? Как вы инициализируете его данные: x,y,w,h?". В него есть метод для рисования. public void main() { RectangleView rects = new RectangleView(); Здесь поля 0 инициализируются. И последующая инициализация скласа контролер неправильная: rview.x = mainView.getFirstPointX(); rview.y = mainView.getFirstPointY(); rview.w = mainView.getWidtht(); rview.h = mainView.getHeightt();--по факту да--но как иначе присвоить знчаения этим четырем переменным класа, чтобы их уже поместить в конструктор прямоугольника--Pkutnyk rect = new Pkutnyk(x, y, w, h);? Если я присвою public class RectangleView extends JPanel { double x=1; double y=1; double w=7; double h=8; --напрямую то прямоуг. нарисуется. То есть проблема передачи в клас прямоугольника значений из полей. В MainView есть public void addButtonListener(ActionListener listenForButton) { button.addActionListener(listenForButton);--с помощью которого то и кнопка запускает фрейм. И то что екшн листенер внутренний что-то меняет--он не может присоить созданному во внешнем класе обьекту rview даные полученые через метод getFirstPointX();--которые в свою очередь получены через gettext--хотя может там парсинг текста в дабл не работает? Ибо проблема очевидно в строке rview.x = mainView.getFirstPointX() и 3ех последующих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 17:27 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
invoke later может подойдет но как сделать обьект типа runnable--да и задания не для аплета предназначено в общем. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 23:35 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
С использованием статических переменных обьектов класа "вид прямоугольника" мне удалось нарисовать прямоугольник. Хотя он почему воспринимает лиш относительные ккординаты и берет во внимание лиш высоту и ширину, а начальные координаты почему то помещаются в начальную верхнюю левую точку. Надо также сделать рабочим поле для ввода цвета--где должно ьыить несколько основных вариантов, чтобы не вводить в кодировке RGB--но вот создаю метод и компилятор мне говорит что -- found : java.lang.String Код: java 1. 2. --почему он требует int если я получаю из поля строку, и даже цвет есть типа java.awt.Color; .... Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 01:08 |
|
||
|
nullpointer exception в интерфейсе swing
|
|||
|---|---|---|---|
|
#18+
stut, Немного изменил ваш код, подредактируйте под себя. Rectangle.java : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. MainView.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. DrawRectangleAction.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. RectangleView.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Appl.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 03:07 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38937989&tid=2125528]: |
0ms |
get settings: |
17ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
15ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 407ms |

| 0 / 0 |
