long res = dim.readLong();
System.out.println("res "+res);
//здесь ты приводишь long к int, и может произойти переполнение,
// и размерность массива будет отрицательной. Из-за этого вылетает эксепшн
byte[] byteArray = new byte[(int) res + 1];
File file = new File(basePath + "\\"+fileName);
//вот здесь ты обрезал получаемою длину файла, и от потока требуешь в будущем прочитать данные в этот массив
//но читаешь ты только кусок
//опять же здесь ты можешь снова получить отрицательное значение размерности массива
byte[] byteArray = new byte[(int) file.length()];
//и во второй раз ты передаешь длину ОБРЕЗАННОГО МАССИВА который в реальности смог прочитать здесь
bufferedInputStream.read(byteArray, 0, byteArray.length); // copied
ActionListener l = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//кнопка которая была нажата
JButton button = (JButton) e.getSource();
//идентификатор действия - предпочтительно использовать его
//естественно при создании кнопки необходимо установить этот идентификатор
String actionCommand = button.getActionCommand();
//или даже без кнопки можно
String actionCommand1 = e.getActionCommand();
//среднячковый вариант
String name = button.getName();
//крайний и отвратительный вариант
String text = button.getText();
}
};
JFrame fr = new JFrame();
//устанавливаем абсолюбтное позиционирование на фрейме
fr.setLayout(null);
fr.setSize(500,500);
Main m = new Main();
//устанавливаем размеры и координаты компонента для размещения в родителя с абсолютным позиционированием
m.setBounds(0,0,500,500);
fr.add(m);
//обязательная вещь, говорит о том что когда ты закроешь окно - и приложение тоже должно закрыться, если этого не сделать, то после закрытия окна приложение продолжит работу и будет висеть в памяти
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setVisible(true);
class Cat{
public int eatBeaf(int weight){
//тут описываем съедение
return result; //результат - продукт переработки котлет
}
}
class Dog{
public int eatBeaf(int weight){
//тут описываем съедение
return result; //результат - продукт переработки котлет
}
}
class GrandMa{
public void feedCat(Cat cat){}
public void feedDog(Dog dog){}
}
interface BeafEater{
int eatBeaf(int weight);
}
//и скажем что и кот и пес - пожиратели котлет и они умеют их есть
class Cat implements BeafEater{
public int eatBeaf(int weight){
//тут описываем съедение
return result; //результат - продукт переработки котлет
}
}
class Dog implements BeafEater{
public int eatBeaf(int weight){
//тут описываем съедение
return result; //результат - продукт переработки котлет
}
}
class GrandMa{
public void feedBeafEater(BeafEater BeafEater){
int weightBeaf = 5;
int shit = beafEater.eatBeaf(weightBeaf ); //кормим поедателя котлет, колучаем какахи
cleanToilet(shit ); //бабушка убирает какахи
}
}
public static void main(String[] args){
GrandMa grandMa = new GrandMa();
Cat cat = new Cat();
Dog dog = new Dog;
//напоминаю и кот и пес - рассматриваются бабушкой как пожиратели котлет, ей важно чтобы они поодерживали определенный интерфейс (умели делать определенные вещи)
grandMa.feedBeafEater(cat);
grandMa.feedBeafEater(dog);
}
List<Cat> cats = new ArrayList();
//добавление котов
Cat cat = new Cat();
cats.add(cat);
//....
//получение кота по индексу
int i = 0;
Cat cat1 = cats.get(i);
//так лучше не делать
cat1.name = "имя";
//лучше написать методы setName(String name) для установки имени и getName() для его получения.
cat1.setName("новое имя");
void close() throws Exception{
//вставляешь вызов
this.destroy();
}
void onGetResult(Request request){
try(Request autoClosableRequest = request){
//делаешь все дела в теле try
//при выходе из try 100% будет вызван метод close(), и выполнена твоя реализация destroy()
}
}
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Pane root = new Pane();
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
//подготавливаем список для листа
ObservableList<TestEntity> list = FXCollections.<TestEntity>observableArrayList();
list.addAll(
new TestEntity(new Button("button1"), "str1"),
new TestEntity(new Button("button2"), "str2"),
new TestEntity(new Button("button3"), "str3"));
ListView<TestEntity> listView = new ListView<TestEntity>(list);
//устанавливаем фабрику для отрисовки ячейки.
listView.setCellFactory(new Callback<ListView<TestEntity>, ListCell<TestEntity>>() {
@Override
public ListCell<TestEntity> call(ListView<TestEntity> param) {
//тут нужно собрать объект ListCell, и вернуть его
ListCell<TestEntity> listCell = new ListCell<TestEntity>(){
//отрисовка происходит здеся
@Override
protected void updateItem(TestEntity item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setGraphic(null);
} else {
//тут конструируешь все что захочешь
//или можешь подгружать fxml
HBox hBox = new HBox();
Label label = new Label(item.getString());
hBox.getChildren().addAll(item.getButton(), label);
//устанавливаем графику
setGraphic(hBox);
}
}
};
return listCell;
}
});
root.getChildren().add(listView);
}
class TestEntity{
Button button;
String string;
TestEntity(Button button, String str){
setButton(button);
setString(str);
}
public Button getButton() {
return button;
}
public void setButton(Button button) {
this.button = button;
}
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
}
public static void main(String[] args) {
launch(args);
}
}